@spacesops/wdk-react-native-core 1.0.0-beta.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +551 -0
  2. package/dist/__mocks__/react.d.ts +40 -0
  3. package/dist/__mocks__/react.js +33 -0
  4. package/dist/__mocks__/react.js.map +1 -0
  5. package/dist/__mocks__/secureStorage.d.ts +26 -0
  6. package/dist/__mocks__/secureStorage.js +80 -0
  7. package/dist/__mocks__/secureStorage.js.map +1 -0
  8. package/dist/__tests__/hooks/useBalance.test.d.ts +6 -0
  9. package/dist/__tests__/hooks/useBalance.test.js +217 -0
  10. package/dist/__tests__/hooks/useBalance.test.js.map +1 -0
  11. package/dist/__tests__/hooks/useWallet.test.d.ts +6 -0
  12. package/dist/__tests__/hooks/useWallet.test.js +105 -0
  13. package/dist/__tests__/hooks/useWallet.test.js.map +1 -0
  14. package/dist/__tests__/hooks/useWalletManager.test.d.ts +6 -0
  15. package/dist/__tests__/hooks/useWalletManager.test.js +193 -0
  16. package/dist/__tests__/hooks/useWalletManager.test.js.map +1 -0
  17. package/dist/__tests__/hooks/useWdkApp.test.d.ts +6 -0
  18. package/dist/__tests__/hooks/useWdkApp.test.js +55 -0
  19. package/dist/__tests__/hooks/useWdkApp.test.js.map +1 -0
  20. package/dist/__tests__/hooks/useWorklet.test.d.ts +6 -0
  21. package/dist/__tests__/hooks/useWorklet.test.js +168 -0
  22. package/dist/__tests__/hooks/useWorklet.test.js.map +1 -0
  23. package/dist/__tests__/provider/WdkAppProvider.test.d.ts +6 -0
  24. package/dist/__tests__/provider/WdkAppProvider.test.js +57 -0
  25. package/dist/__tests__/provider/WdkAppProvider.test.js.map +1 -0
  26. package/dist/__tests__/services/accountService.test.d.ts +6 -0
  27. package/dist/__tests__/services/accountService.test.js +216 -0
  28. package/dist/__tests__/services/accountService.test.js.map +1 -0
  29. package/dist/__tests__/services/addressService.test.d.ts +6 -0
  30. package/dist/__tests__/services/addressService.test.js +246 -0
  31. package/dist/__tests__/services/addressService.test.js.map +1 -0
  32. package/dist/__tests__/services/balanceService.test.d.ts +6 -0
  33. package/dist/__tests__/services/balanceService.test.js +333 -0
  34. package/dist/__tests__/services/balanceService.test.js.map +1 -0
  35. package/dist/__tests__/services/walletSetupService.test.d.ts +6 -0
  36. package/dist/__tests__/services/walletSetupService.test.js +304 -0
  37. package/dist/__tests__/services/walletSetupService.test.js.map +1 -0
  38. package/dist/__tests__/services/walletSwitchingService.test.d.ts +6 -0
  39. package/dist/__tests__/services/walletSwitchingService.test.js +209 -0
  40. package/dist/__tests__/services/walletSwitchingService.test.js.map +1 -0
  41. package/dist/__tests__/services/workletLifecycleService.test.d.ts +6 -0
  42. package/dist/__tests__/services/workletLifecycleService.test.js +451 -0
  43. package/dist/__tests__/services/workletLifecycleService.test.js.map +1 -0
  44. package/dist/__tests__/setup.d.ts +7 -0
  45. package/dist/__tests__/setup.js +49 -0
  46. package/dist/__tests__/setup.js.map +1 -0
  47. package/dist/__tests__/storage/mmkvStorage.test.d.ts +6 -0
  48. package/dist/__tests__/storage/mmkvStorage.test.js +213 -0
  49. package/dist/__tests__/storage/mmkvStorage.test.js.map +1 -0
  50. package/dist/__tests__/store/walletStore.test.d.ts +4 -0
  51. package/dist/__tests__/store/walletStore.test.js +86 -0
  52. package/dist/__tests__/store/walletStore.test.js.map +1 -0
  53. package/dist/__tests__/store/workletStore.test.d.ts +4 -0
  54. package/dist/__tests__/store/workletStore.test.js +255 -0
  55. package/dist/__tests__/store/workletStore.test.js.map +1 -0
  56. package/dist/__tests__/types/hrpc.test.d.ts +4 -0
  57. package/dist/__tests__/types/hrpc.test.js +99 -0
  58. package/dist/__tests__/types/hrpc.test.js.map +1 -0
  59. package/dist/__tests__/utils/balanceUtils.test.d.ts +4 -0
  60. package/dist/__tests__/utils/balanceUtils.test.js +133 -0
  61. package/dist/__tests__/utils/balanceUtils.test.js.map +1 -0
  62. package/dist/__tests__/utils/errorHandling.test.d.ts +6 -0
  63. package/dist/__tests__/utils/errorHandling.test.js +119 -0
  64. package/dist/__tests__/utils/errorHandling.test.js.map +1 -0
  65. package/dist/__tests__/utils/errorUtils.test.d.ts +4 -0
  66. package/dist/__tests__/utils/errorUtils.test.js +133 -0
  67. package/dist/__tests__/utils/errorUtils.test.js.map +1 -0
  68. package/dist/__tests__/utils/initializationState.test.d.ts +6 -0
  69. package/dist/__tests__/utils/initializationState.test.js +243 -0
  70. package/dist/__tests__/utils/initializationState.test.js.map +1 -0
  71. package/dist/__tests__/utils/jsonUtils.test.d.ts +4 -0
  72. package/dist/__tests__/utils/jsonUtils.test.js +118 -0
  73. package/dist/__tests__/utils/jsonUtils.test.js.map +1 -0
  74. package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +6 -0
  75. package/dist/__tests__/utils/mmkvKeyManager.test.js +158 -0
  76. package/dist/__tests__/utils/mmkvKeyManager.test.js.map +1 -0
  77. package/dist/__tests__/utils/mnemonicUtils.test.d.ts +4 -0
  78. package/dist/__tests__/utils/mnemonicUtils.test.js +40 -0
  79. package/dist/__tests__/utils/mnemonicUtils.test.js.map +1 -0
  80. package/dist/__tests__/utils/raceConditions.test.d.ts +6 -0
  81. package/dist/__tests__/utils/raceConditions.test.js +239 -0
  82. package/dist/__tests__/utils/raceConditions.test.js.map +1 -0
  83. package/dist/__tests__/utils/result.test.d.ts +4 -0
  84. package/dist/__tests__/utils/result.test.js +66 -0
  85. package/dist/__tests__/utils/result.test.js.map +1 -0
  86. package/dist/__tests__/utils/schemas.test.d.ts +4 -0
  87. package/dist/__tests__/utils/schemas.test.js +66 -0
  88. package/dist/__tests__/utils/schemas.test.js.map +1 -0
  89. package/dist/__tests__/utils/storeHelpers.test.d.ts +4 -0
  90. package/dist/__tests__/utils/storeHelpers.test.js +227 -0
  91. package/dist/__tests__/utils/storeHelpers.test.js.map +1 -0
  92. package/dist/__tests__/utils/typeGuards.test.d.ts +4 -0
  93. package/dist/__tests__/utils/typeGuards.test.js +175 -0
  94. package/dist/__tests__/utils/typeGuards.test.js.map +1 -0
  95. package/dist/__tests__/utils/validation.test.d.ts +4 -0
  96. package/dist/__tests__/utils/validation.test.js +126 -0
  97. package/dist/__tests__/utils/validation.test.js.map +1 -0
  98. package/dist/__tests__/utils/walletUtils.test.d.ts +4 -0
  99. package/dist/__tests__/utils/walletUtils.test.js +156 -0
  100. package/dist/__tests__/utils/walletUtils.test.js.map +1 -0
  101. package/dist/hooks/useBalance.d.ts +170 -0
  102. package/dist/hooks/useBalance.js +442 -0
  103. package/dist/hooks/useBalance.js.map +1 -0
  104. package/dist/hooks/useWallet.d.ts +43 -0
  105. package/dist/hooks/useWallet.js +193 -0
  106. package/dist/hooks/useWallet.js.map +1 -0
  107. package/dist/hooks/useWalletManager.d.ts +100 -0
  108. package/dist/hooks/useWalletManager.js +526 -0
  109. package/dist/hooks/useWalletManager.js.map +1 -0
  110. package/dist/hooks/useWdkApp.d.ts +66 -0
  111. package/dist/hooks/useWdkApp.js +74 -0
  112. package/dist/hooks/useWdkApp.js.map +1 -0
  113. package/dist/hooks/useWorklet.d.ts +66 -0
  114. package/dist/hooks/useWorklet.js +42 -0
  115. package/dist/hooks/useWorklet.js.map +1 -0
  116. package/dist/index.d.ts +33 -0
  117. package/dist/index.js +36 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/provider/WdkAppProvider.d.ts +112 -0
  120. package/dist/provider/WdkAppProvider.js +558 -0
  121. package/dist/provider/WdkAppProvider.js.map +1 -0
  122. package/dist/services/accountService.d.ts +52 -0
  123. package/dist/services/accountService.js +119 -0
  124. package/dist/services/accountService.js.map +1 -0
  125. package/dist/services/addressService.d.ts +22 -0
  126. package/dist/services/addressService.js +110 -0
  127. package/dist/services/addressService.js.map +1 -0
  128. package/dist/services/balanceService.d.ts +114 -0
  129. package/dist/services/balanceService.js +208 -0
  130. package/dist/services/balanceService.js.map +1 -0
  131. package/dist/services/walletSetupService.d.ts +217 -0
  132. package/dist/services/walletSetupService.js +535 -0
  133. package/dist/services/walletSetupService.js.map +1 -0
  134. package/dist/services/walletSwitchingService.d.ts +48 -0
  135. package/dist/services/walletSwitchingService.js +143 -0
  136. package/dist/services/walletSwitchingService.js.map +1 -0
  137. package/dist/services/workletLifecycleService.d.ts +117 -0
  138. package/dist/services/workletLifecycleService.js +433 -0
  139. package/dist/services/workletLifecycleService.js.map +1 -0
  140. package/dist/storage/mmkvStorage.d.ts +44 -0
  141. package/dist/storage/mmkvStorage.js +348 -0
  142. package/dist/storage/mmkvStorage.js.map +1 -0
  143. package/dist/store/walletStore.d.ts +130 -0
  144. package/dist/store/walletStore.js +204 -0
  145. package/dist/store/walletStore.js.map +1 -0
  146. package/dist/store/workletStore.d.ts +121 -0
  147. package/dist/store/workletStore.js +256 -0
  148. package/dist/store/workletStore.js.map +1 -0
  149. package/dist/types/hrpc.d.ts +60 -0
  150. package/dist/types/hrpc.js +26 -0
  151. package/dist/types/hrpc.js.map +1 -0
  152. package/dist/types.d.ts +168 -0
  153. package/dist/types.js +7 -0
  154. package/dist/types.js.map +1 -0
  155. package/dist/utils/balanceUtils.d.ts +30 -0
  156. package/dist/utils/balanceUtils.js +86 -0
  157. package/dist/utils/balanceUtils.js.map +1 -0
  158. package/dist/utils/constants.d.ts +66 -0
  159. package/dist/utils/constants.js +73 -0
  160. package/dist/utils/constants.js.map +1 -0
  161. package/dist/utils/errorHandling.d.ts +47 -0
  162. package/dist/utils/errorHandling.js +54 -0
  163. package/dist/utils/errorHandling.js.map +1 -0
  164. package/dist/utils/errorUtils.d.ts +89 -0
  165. package/dist/utils/errorUtils.js +264 -0
  166. package/dist/utils/errorUtils.js.map +1 -0
  167. package/dist/utils/initializationState.d.ts +129 -0
  168. package/dist/utils/initializationState.js +220 -0
  169. package/dist/utils/initializationState.js.map +1 -0
  170. package/dist/utils/jsonUtils.d.ts +21 -0
  171. package/dist/utils/jsonUtils.js +67 -0
  172. package/dist/utils/jsonUtils.js.map +1 -0
  173. package/dist/utils/logger.d.ts +27 -0
  174. package/dist/utils/logger.js +50 -0
  175. package/dist/utils/logger.js.map +1 -0
  176. package/dist/utils/mmkvKeyManager.d.ts +57 -0
  177. package/dist/utils/mmkvKeyManager.js +214 -0
  178. package/dist/utils/mmkvKeyManager.js.map +1 -0
  179. package/dist/utils/mnemonicUtils.d.ts +17 -0
  180. package/dist/utils/mnemonicUtils.js +28 -0
  181. package/dist/utils/mnemonicUtils.js.map +1 -0
  182. package/dist/utils/operationMutex.d.ts +69 -0
  183. package/dist/utils/operationMutex.js +150 -0
  184. package/dist/utils/operationMutex.js.map +1 -0
  185. package/dist/utils/result.d.ts +34 -0
  186. package/dist/utils/result.js +43 -0
  187. package/dist/utils/result.js.map +1 -0
  188. package/dist/utils/schemas.d.ts +365 -0
  189. package/dist/utils/schemas.js +152 -0
  190. package/dist/utils/schemas.js.map +1 -0
  191. package/dist/utils/storeHelpers.d.ts +112 -0
  192. package/dist/utils/storeHelpers.js +198 -0
  193. package/dist/utils/storeHelpers.js.map +1 -0
  194. package/dist/utils/typeGuards.d.ts +70 -0
  195. package/dist/utils/typeGuards.js +95 -0
  196. package/dist/utils/typeGuards.js.map +1 -0
  197. package/dist/utils/validation.d.ts +53 -0
  198. package/dist/utils/validation.js +152 -0
  199. package/dist/utils/validation.js.map +1 -0
  200. package/dist/utils/walletStateHelpers.d.ts +62 -0
  201. package/dist/utils/walletStateHelpers.js +81 -0
  202. package/dist/utils/walletStateHelpers.js.map +1 -0
  203. package/dist/utils/walletUtils.d.ts +38 -0
  204. package/dist/utils/walletUtils.js +87 -0
  205. package/dist/utils/walletUtils.js.map +1 -0
  206. package/package.json +79 -0
  207. package/src/__mocks__/react.ts +34 -0
  208. package/src/__mocks__/secureStorage.ts +87 -0
  209. package/src/__tests__/hooks/useBalance.test.ts +286 -0
  210. package/src/__tests__/hooks/useWallet.test.ts +122 -0
  211. package/src/__tests__/hooks/useWalletManager.test.ts +271 -0
  212. package/src/__tests__/hooks/useWdkApp.test.tsx +59 -0
  213. package/src/__tests__/hooks/useWorklet.test.ts +195 -0
  214. package/src/__tests__/provider/WdkAppProvider.test.tsx +67 -0
  215. package/src/__tests__/services/accountService.test.ts +337 -0
  216. package/src/__tests__/services/addressService.test.ts +312 -0
  217. package/src/__tests__/services/balanceService.test.ts +411 -0
  218. package/src/__tests__/services/walletSetupService.test.ts +463 -0
  219. package/src/__tests__/services/walletSwitchingService.test.ts +258 -0
  220. package/src/__tests__/services/workletLifecycleService.test.ts +514 -0
  221. package/src/__tests__/setup.ts +54 -0
  222. package/src/__tests__/storage/mmkvStorage.test.ts +325 -0
  223. package/src/__tests__/store/walletStore.test.ts +101 -0
  224. package/src/__tests__/store/workletStore.test.ts +329 -0
  225. package/src/__tests__/types/hrpc.test.ts +125 -0
  226. package/src/__tests__/utils/balanceUtils.test.ts +151 -0
  227. package/src/__tests__/utils/errorHandling.test.ts +147 -0
  228. package/src/__tests__/utils/errorUtils.test.ts +170 -0
  229. package/src/__tests__/utils/initializationState.test.ts +337 -0
  230. package/src/__tests__/utils/jsonUtils.test.ts +131 -0
  231. package/src/__tests__/utils/mmkvKeyManager.test.ts +205 -0
  232. package/src/__tests__/utils/mnemonicUtils.test.ts +48 -0
  233. package/src/__tests__/utils/raceConditions.test.ts +292 -0
  234. package/src/__tests__/utils/result.test.ts +73 -0
  235. package/src/__tests__/utils/schemas.test.ts +82 -0
  236. package/src/__tests__/utils/storeHelpers.test.ts +323 -0
  237. package/src/__tests__/utils/typeGuards.test.ts +209 -0
  238. package/src/__tests__/utils/validation.test.ts +152 -0
  239. package/src/__tests__/utils/walletUtils.test.ts +195 -0
  240. package/src/hooks/useBalance.ts +597 -0
  241. package/src/hooks/useWallet.ts +288 -0
  242. package/src/hooks/useWalletManager.ts +654 -0
  243. package/src/hooks/useWdkApp.ts +78 -0
  244. package/src/hooks/useWorklet.ts +109 -0
  245. package/src/index.ts +112 -0
  246. package/src/provider/WdkAppProvider.tsx +764 -0
  247. package/src/services/accountService.ts +134 -0
  248. package/src/services/addressService.ts +125 -0
  249. package/src/services/balanceService.ts +291 -0
  250. package/src/services/walletSetupService.ts +695 -0
  251. package/src/services/walletSwitchingService.ts +157 -0
  252. package/src/services/workletLifecycleService.ts +561 -0
  253. package/src/storage/mmkvStorage.ts +417 -0
  254. package/src/store/walletStore.ts +301 -0
  255. package/src/store/workletStore.ts +340 -0
  256. package/src/types/hrpc.ts +78 -0
  257. package/src/types.ts +188 -0
  258. package/src/utils/balanceUtils.ts +96 -0
  259. package/src/utils/constants.ts +84 -0
  260. package/src/utils/errorHandling.md +163 -0
  261. package/src/utils/errorHandling.ts +61 -0
  262. package/src/utils/errorUtils.ts +300 -0
  263. package/src/utils/initializationState.ts +242 -0
  264. package/src/utils/jsonUtils.ts +75 -0
  265. package/src/utils/logger.ts +54 -0
  266. package/src/utils/mmkvKeyManager.ts +256 -0
  267. package/src/utils/mnemonicUtils.ts +35 -0
  268. package/src/utils/operationMutex.ts +181 -0
  269. package/src/utils/result.ts +57 -0
  270. package/src/utils/schemas.ts +190 -0
  271. package/src/utils/storeHelpers.ts +236 -0
  272. package/src/utils/typeGuards.ts +129 -0
  273. package/src/utils/validation.ts +174 -0
  274. package/src/utils/walletStateHelpers.ts +104 -0
  275. package/src/utils/walletUtils.ts +107 -0
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Wallet Switching Service
3
+ *
4
+ * Handles wallet switching operations: checking wallet existence, loading credentials,
5
+ * and initializing WDK with the new wallet.
6
+ *
7
+ * Architecture:
8
+ * - This service is the single source of truth for wallet switching logic
9
+ * - Used by useWallet hook for automatic wallet switching
10
+ * - Can be used by other components that need to switch wallets programmatically
11
+ */
12
+ import { WalletSetupService } from './walletSetupService';
13
+ import { WorkletLifecycleService } from './workletLifecycleService';
14
+ import { getWalletStore } from '../store/walletStore';
15
+ import { updateWalletLoadingState, getWalletIdFromLoadingState } from '../store/walletStore';
16
+ import { withOperationMutex } from '../utils/operationMutex';
17
+ import { normalizeError } from '../utils/errorUtils';
18
+ import { log, logError } from '../utils/logger';
19
+ /**
20
+ * Wallet Switching Service
21
+ *
22
+ * Provides methods for switching between wallets.
23
+ */
24
+ export class WalletSwitchingService {
25
+ /**
26
+ * Switch to a wallet by identifier
27
+ *
28
+ * This method:
29
+ * 1. Checks if the wallet exists (fail fast)
30
+ * 2. Ensures worklet is started
31
+ * 3. Loads credentials for the wallet
32
+ * 4. Initializes WDK with the credentials
33
+ * 5. Updates activeWalletId in the store
34
+ *
35
+ * @param walletId - Wallet identifier to switch to
36
+ * @param options - Optional configuration
37
+ * @param options.autoStartWorklet - If true, start worklet if not started (default: false)
38
+ * @throws Error if wallet doesn't exist or switching fails
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * await WalletSwitchingService.switchToWallet('user@example.com')
43
+ * ```
44
+ */
45
+ static async switchToWallet(walletId, options) {
46
+ return withOperationMutex(`switchToWallet:${walletId}`, async () => {
47
+ const walletStore = getWalletStore();
48
+ const activeWalletId = walletStore.getState().activeWalletId;
49
+ // Check if already on this wallet
50
+ if (activeWalletId === walletId) {
51
+ log('[WalletSwitchingService] Already on wallet', { walletId });
52
+ return;
53
+ }
54
+ try {
55
+ // Update loading state
56
+ walletStore.setState((prev) => updateWalletLoadingState(prev, {
57
+ type: 'loading',
58
+ identifier: walletId,
59
+ walletExists: true,
60
+ }));
61
+ // Check if wallet exists first (fail fast)
62
+ const walletExists = await WalletSetupService.hasWallet(walletId);
63
+ if (!walletExists) {
64
+ throw new Error(`Wallet with identifier "${walletId}" does not exist`);
65
+ }
66
+ // Ensure worklet is started
67
+ await WorkletLifecycleService.ensureWorkletStarted(undefined, {
68
+ autoStart: options?.autoStartWorklet ?? false,
69
+ });
70
+ // Note: We don't clear previous wallet's credentials cache when switching
71
+ // The LRU eviction policy in workletStore will handle cache management
72
+ // This allows users to switch back to recently used wallets without re-authentication
73
+ if (activeWalletId !== null && activeWalletId !== walletId) {
74
+ log('[WalletSwitchingService] Switching wallets', {
75
+ from: activeWalletId,
76
+ to: walletId,
77
+ });
78
+ // Cache is managed by LRU eviction - no need to clear here
79
+ }
80
+ // Load credentials for the wallet
81
+ const credentials = await WalletSetupService.loadExistingWallet(walletId);
82
+ // Switch worklet to this wallet
83
+ await WorkletLifecycleService.initializeWDK({
84
+ encryptionKey: credentials.encryptionKey,
85
+ encryptedSeed: credentials.encryptedSeed,
86
+ });
87
+ // Update activeWalletId in store and mark as ready
88
+ walletStore.setState((prev) => ({
89
+ ...updateWalletLoadingState(prev, {
90
+ type: 'ready',
91
+ identifier: walletId,
92
+ }),
93
+ activeWalletId: walletId,
94
+ }));
95
+ log('[WalletSwitchingService] Successfully switched to wallet', { walletId });
96
+ }
97
+ catch (error) {
98
+ // Cleanup state on error
99
+ const normalizedError = normalizeError(error, false, {
100
+ component: 'WalletSwitchingService',
101
+ operation: 'switchToWallet',
102
+ walletId,
103
+ });
104
+ logError('[WalletSwitchingService] Failed to switch wallet, cleaning up state', normalizedError);
105
+ walletStore.setState((prev) => {
106
+ const currentWalletId = getWalletIdFromLoadingState(prev.walletLoadingState);
107
+ // Only update error state if we were loading this wallet
108
+ if (currentWalletId === walletId || prev.walletLoadingState.type === 'loading') {
109
+ return updateWalletLoadingState(prev, {
110
+ type: 'error',
111
+ identifier: walletId,
112
+ error: normalizedError,
113
+ });
114
+ }
115
+ return prev;
116
+ });
117
+ throw normalizedError;
118
+ }
119
+ });
120
+ }
121
+ /**
122
+ * Check if a wallet can be switched to
123
+ *
124
+ * @param walletId - Wallet identifier to check
125
+ * @returns Promise resolving to true if wallet exists and can be switched to
126
+ */
127
+ static async canSwitchToWallet(walletId) {
128
+ try {
129
+ return await WalletSetupService.hasWallet(walletId);
130
+ }
131
+ catch (error) {
132
+ // Log error but don't throw - this is a non-critical check
133
+ const normalizedError = normalizeError(error, false, {
134
+ component: 'WalletSwitchingService',
135
+ operation: 'canSwitchToWallet',
136
+ walletId,
137
+ });
138
+ logError('[WalletSwitchingService] Failed to check wallet:', normalizedError);
139
+ return false;
140
+ }
141
+ }
142
+ }
143
+ //# sourceMappingURL=walletSwitchingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletSwitchingService.js","sourceRoot":"","sources":["../../src/services/walletSwitchingService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Worklet Lifecycle Service
3
+ *
4
+ * Handles worklet lifecycle operations: starting, initializing, and cleaning up worklets.
5
+ * This service is focused solely on worklet lifecycle management.
6
+ */
7
+ import type { NetworkConfigs } from '../types';
8
+ /**
9
+ * Worklet Lifecycle Service
10
+ *
11
+ * Provides methods for managing worklet lifecycle: start, initialize, cleanup, reset.
12
+ */
13
+ export declare class WorkletLifecycleService {
14
+ /**
15
+ * Cleanup a resource by trying cleanup methods in order
16
+ * Handles cleanup gracefully, continuing even if individual steps fail
17
+ */
18
+ private static cleanupResource;
19
+ /**
20
+ * Cleanup worklet resources (HRPC and Worklet instances)
21
+ * Handles cleanup gracefully, continuing even if individual steps fail
22
+ */
23
+ private static cleanupWorkletResources;
24
+ /**
25
+ * Start the worklet with network configurations
26
+ */
27
+ static startWorklet(networkConfigs: NetworkConfigs): Promise<void>;
28
+ /**
29
+ * Ensure worklet is started, starting it if needed
30
+ *
31
+ * @param networkConfigs - Network configs (required if autoStart=true)
32
+ * @param options - Options
33
+ * @param options.autoStart - If true, start worklet if not started (default: false)
34
+ * @throws Error if worklet not started and autoStart=false or networkConfigs not provided
35
+ */
36
+ static ensureWorkletStarted(networkConfigs?: NetworkConfigs, options?: {
37
+ autoStart?: boolean;
38
+ }): Promise<void>;
39
+ /**
40
+ * Initialize WDK with encrypted seed (ONLY encrypted approach)
41
+ */
42
+ static initializeWDK(options: {
43
+ encryptionKey: string;
44
+ encryptedSeed: string;
45
+ }): Promise<void>;
46
+ /**
47
+ * Generate entropy and encrypt (for creating new wallets)
48
+ */
49
+ static generateEntropyAndEncrypt(wordCount?: 12 | 24): Promise<{
50
+ encryptionKey: string;
51
+ encryptedSeedBuffer: string;
52
+ encryptedEntropyBuffer: string;
53
+ }>;
54
+ /**
55
+ * Get mnemonic from encrypted entropy (for display purposes only - never stored)
56
+ */
57
+ static getMnemonicFromEntropy(encryptedEntropy: string, encryptionKey: string): Promise<{
58
+ mnemonic: string;
59
+ }>;
60
+ /**
61
+ * Get seed and entropy from mnemonic phrase (for importing existing wallets)
62
+ */
63
+ static getSeedAndEntropyFromMnemonic(mnemonic: string): Promise<{
64
+ encryptionKey: string;
65
+ encryptedSeedBuffer: string;
66
+ encryptedEntropyBuffer: string;
67
+ }>;
68
+ /**
69
+ * Initialize both worklet and WDK in one call (convenience method) - ONLY encrypted
70
+ */
71
+ static initializeWorklet(options: {
72
+ encryptionKey: string;
73
+ encryptedSeed: string;
74
+ networkConfigs: NetworkConfigs;
75
+ }): Promise<void>;
76
+ /**
77
+ * Handle error for methods that throw with a message prefix
78
+ * Normalizes error, logs it, and throws a new error with operation context
79
+ */
80
+ private static handleAndThrowError;
81
+ /**
82
+ * Handle error for methods that update store state
83
+ * Normalizes error, updates store state, and re-throws
84
+ */
85
+ private static handleErrorWithStateUpdate;
86
+ /**
87
+ * Extract WDK initialization result status
88
+ * Safely extracts status from result object
89
+ */
90
+ private static extractWdkInitResult;
91
+ /**
92
+ * Reset both worklet and wallet stores
93
+ */
94
+ private static resetStores;
95
+ /**
96
+ * Cleanup worklet resources
97
+ * Clears only addresses, seed, and WDK instance - does NOT terminate the worklet
98
+ * The worklet continues running for faster re-initialization
99
+ */
100
+ static cleanup(): Promise<void>;
101
+ /**
102
+ * Reset worklet state (synchronous)
103
+ * Clears only addresses, seed, and WDK instance - does NOT terminate the worklet
104
+ * The worklet continues running for faster re-initialization
105
+ * For async cleanup, use cleanup() instead
106
+ */
107
+ static reset(): void;
108
+ /**
109
+ * Clear error state
110
+ */
111
+ static clearError(): void;
112
+ /**
113
+ * Check if wallet is initialized
114
+ * Returns true if worklet is started and WDK is initialized
115
+ */
116
+ static isInitialized(): boolean;
117
+ }