@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,74 @@
1
+ /**
2
+ * useWdkApp Hook
3
+ *
4
+ * Hook to access WdkAppProvider context for app-level initialization state.
5
+ * Must be used within WdkAppProvider.
6
+ *
7
+ * Purpose: Check if the app is ready and get initialization status.
8
+ * - Use this to check: "Is the app ready? What's the initialization status?"
9
+ * - For wallet operations (addresses, account methods): Use useWallet()
10
+ * - For wallet lifecycle (create, load, import, delete): Use useWalletManager()
11
+ *
12
+ * @example
13
+ * Simple usage (most common):
14
+ * ```tsx
15
+ * import { AppStatus } from '@tetherto/wdk-react-native-core'
16
+ *
17
+ * function MyComponent() {
18
+ * const { status, isReady, activeWalletId, error } = useWdkApp()
19
+ *
20
+ * if (isReady) {
21
+ * return <AppContent walletId={activeWalletId} />
22
+ * }
23
+ *
24
+ * if (status === AppStatus.ERROR) {
25
+ * return <ErrorScreen error={error} />
26
+ * }
27
+ *
28
+ * return <LoadingScreen />
29
+ * }
30
+ * ```
31
+ *
32
+ * @example
33
+ * Advanced usage (granular control):
34
+ * ```tsx
35
+ * function MyComponent() {
36
+ * const { workletState, walletState, activeWalletId } = useWdkApp()
37
+ *
38
+ * // Show different UI based on specific states
39
+ * if (workletState.isReady && walletState.status === 'not_loaded') {
40
+ * return <SelectWalletScreen />
41
+ * }
42
+ *
43
+ * if (workletState.error) {
44
+ * return <WorkletErrorScreen error={workletState.error} />
45
+ * }
46
+ *
47
+ * if (walletState.error) {
48
+ * return <WalletErrorScreen error={walletState.error} />
49
+ * }
50
+ *
51
+ * if (walletState.status === 'ready') {
52
+ * return <AppContent walletId={activeWalletId} />
53
+ * }
54
+ *
55
+ * return <LoadingScreen />
56
+ * }
57
+ * ```
58
+ */
59
+ import { useContext } from 'react';
60
+ import { WdkAppContext } from '../provider/WdkAppProvider';
61
+ /**
62
+ * Hook to access WdkAppProvider context
63
+ *
64
+ * @returns WdkApp context value with initialization state
65
+ * @throws Error if used outside WdkAppProvider
66
+ */
67
+ export function useWdkApp() {
68
+ const context = useContext(WdkAppContext);
69
+ if (!context) {
70
+ throw new Error('useWdkApp must be used within WdkAppProvider');
71
+ }
72
+ return context;
73
+ }
74
+ //# sourceMappingURL=useWdkApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWdkApp.js","sourceRoot":"","sources":["../../src/hooks/useWdkApp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG1D;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { HRPC } from '@spacesops/pear-wrk-wdk';
2
+ import type { WorkletStartResponse } from '@spacesops/pear-wrk-wdk/types/rpc';
3
+ import type { Worklet } from '@spacesops/react-native-bare-kit';
4
+ import type { NetworkConfigs } from '../types';
5
+ /**
6
+ * Hook to interact with the worklet
7
+ *
8
+ * This is the main hook that components should use to access worklet functionality.
9
+ *
10
+ * For wallet-specific operations (addresses, accounts), use `useWallet()` hook instead.
11
+ *
12
+ * The worklet automatically starts when `WdkAppProvider` loads.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const { hrpc, isInitialized, isLoading, initializeWDK, generateEntropyAndEncrypt, error } = useWorklet()
17
+ *
18
+ * useEffect(() => {
19
+ * if (isInitialized && !isLoading) {
20
+ * // Worklet is already started by WdkAppProvider
21
+ * const { encryptionKey, encryptedSeedBuffer } = await generateEntropyAndEncrypt(12)
22
+ * await initializeWDK({ encryptionKey, encryptedSeed: encryptedSeedBuffer })
23
+ * }
24
+ * }, [isInitialized, isLoading])
25
+ * ```
26
+ */
27
+ export interface UseWorkletResult {
28
+ isWorkletStarted: boolean;
29
+ isInitialized: boolean;
30
+ isLoading: boolean;
31
+ error: string | null;
32
+ hrpc: HRPC | null;
33
+ worklet: Worklet | null;
34
+ workletStartResult: WorkletStartResponse | null;
35
+ wdkInitResult: {
36
+ status?: string | null;
37
+ } | null;
38
+ encryptedSeed: string | null;
39
+ encryptionKey: string | null;
40
+ networkConfigs: NetworkConfigs | null;
41
+ initializeWDK: (options: {
42
+ encryptionKey: string;
43
+ encryptedSeed: string;
44
+ }) => Promise<void>;
45
+ generateEntropyAndEncrypt: (wordCount?: 12 | 24) => Promise<{
46
+ encryptionKey: string;
47
+ encryptedSeedBuffer: string;
48
+ encryptedEntropyBuffer: string;
49
+ }>;
50
+ getMnemonicFromEntropy: (encryptedEntropy: string, encryptionKey: string) => Promise<{
51
+ mnemonic: string;
52
+ }>;
53
+ getSeedAndEntropyFromMnemonic: (mnemonic: string) => Promise<{
54
+ encryptionKey: string;
55
+ encryptedSeedBuffer: string;
56
+ encryptedEntropyBuffer: string;
57
+ }>;
58
+ initializeWorklet: (options: {
59
+ encryptionKey: string;
60
+ encryptedSeed: string;
61
+ networkConfigs: NetworkConfigs;
62
+ }) => Promise<void>;
63
+ reset: () => void;
64
+ clearError: () => void;
65
+ }
66
+ export declare function useWorklet(): UseWorkletResult;
@@ -0,0 +1,42 @@
1
+ import { useShallow } from 'zustand/react/shallow';
2
+ import { WorkletLifecycleService } from '../services/workletLifecycleService';
3
+ import { getWorkletStore } from '../store/workletStore';
4
+ export function useWorklet() {
5
+ const store = getWorkletStore();
6
+ // Subscribe to state changes
7
+ const selector = useShallow((state) => ({
8
+ isWorkletStarted: state.isWorkletStarted,
9
+ isInitialized: state.isInitialized,
10
+ isLoading: state.isLoading,
11
+ error: state.error,
12
+ hrpc: state.hrpc,
13
+ worklet: state.worklet,
14
+ workletStartResult: state.workletStartResult,
15
+ wdkInitResult: state.wdkInitResult,
16
+ encryptedSeed: state.encryptedSeed,
17
+ encryptionKey: state.encryptionKey,
18
+ networkConfigs: state.networkConfigs,
19
+ }));
20
+ const workletState = store(selector);
21
+ return {
22
+ isWorkletStarted: workletState.isWorkletStarted,
23
+ isInitialized: workletState.isInitialized,
24
+ isLoading: workletState.isLoading,
25
+ error: workletState.error,
26
+ hrpc: workletState.hrpc,
27
+ worklet: workletState.worklet,
28
+ workletStartResult: workletState.workletStartResult,
29
+ wdkInitResult: workletState.wdkInitResult,
30
+ encryptedSeed: workletState.encryptedSeed,
31
+ encryptionKey: workletState.encryptionKey,
32
+ networkConfigs: workletState.networkConfigs,
33
+ initializeWDK: WorkletLifecycleService.initializeWDK,
34
+ generateEntropyAndEncrypt: WorkletLifecycleService.generateEntropyAndEncrypt,
35
+ getMnemonicFromEntropy: WorkletLifecycleService.getMnemonicFromEntropy,
36
+ getSeedAndEntropyFromMnemonic: WorkletLifecycleService.getSeedAndEntropyFromMnemonic,
37
+ initializeWorklet: WorkletLifecycleService.initializeWorklet,
38
+ reset: WorkletLifecycleService.reset,
39
+ clearError: WorkletLifecycleService.clearError,
40
+ };
41
+ }
42
+ //# sourceMappingURL=useWorklet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorklet.js","sourceRoot":"","sources":["../../src/hooks/useWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAMlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AA6DvD,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAE/B,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC;QACpD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC,CAAC,CAAA;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEpC,OAAO;QACL,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;QACnD,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,aAAa,EAAE,uBAAuB,CAAC,aAAa;QACpD,yBAAyB,EAAE,uBAAuB,CAAC,yBAAyB;QAC5E,sBAAsB,EAAE,uBAAuB,CAAC,sBAAsB;QACtE,6BAA6B,EAAE,uBAAuB,CAAC,6BAA6B;QACpF,iBAAiB,EAAE,uBAAuB,CAAC,iBAAiB;QAC5D,KAAK,EAAE,uBAAuB,CAAC,KAAK;QACpC,UAAU,EAAE,uBAAuB,CAAC,UAAU;KAC/C,CAAA;AACH,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @tetherto/wdk-react-native-core
3
+ *
4
+ * Core functionality for React Native wallets
5
+ * Provides wallet management, balance fetching, and worklet operations
6
+ */
7
+ export type { NetworkConfig, NetworkConfigs, TokenConfig, NetworkTokens, TokenConfigs, Wallet, WalletAddresses, WalletBalances, BalanceLoadingStates, BalanceFetchResult, TokenConfigProvider, TokenHelpers, WalletStore, } from './types';
8
+ export type { ExtendedHRPC } from './types/hrpc';
9
+ export { isExtendedHRPC, asExtendedHRPC } from './types/hrpc';
10
+ export { WdkAppProvider } from './provider/WdkAppProvider';
11
+ export type { WdkAppProviderProps, WdkAppContextValue } from './provider/WdkAppProvider';
12
+ export { useWorklet } from './hooks/useWorklet';
13
+ export { useWallet } from './hooks/useWallet';
14
+ export { useWdkApp } from './hooks/useWdkApp';
15
+ export { useWalletManager } from './hooks/useWalletManager';
16
+ export type { UseWalletManagerResult, WalletInfo } from './hooks/useWalletManager';
17
+ export { useBalance, useBalancesForWallet, useBalancesForWallets, useRefreshBalance, balanceQueryKeys } from './hooks/useBalance';
18
+ export type { AccountInfo } from './store/walletStore';
19
+ export { validateNetworkConfigs, validateTokenConfigs, validateBalanceRefreshInterval, validateAccountIndex, validateTokenAddress, } from './utils/validation';
20
+ export { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, sparkAddressSchema, addressSchema, } from './utils/schemas';
21
+ export { isNetworkConfigs, isTokenConfigs, isEthereumAddress, isValidAccountIndex, isValidNetworkName, } from './utils/typeGuards';
22
+ export { WorkletLifecycleService } from './services/workletLifecycleService';
23
+ export { AddressService } from './services/addressService';
24
+ export { AccountService } from './services/accountService';
25
+ export { BalanceService } from './services/balanceService';
26
+ export { WalletSetupService } from './services/walletSetupService';
27
+ export { WalletSwitchingService } from './services/walletSwitchingService';
28
+ export { validateMnemonic } from './utils/mnemonicUtils';
29
+ export { convertBalanceToString, formatBalance, convertBigIntToString } from './utils/balanceUtils';
30
+ export { normalizeError, getErrorMessage, isErrorType, createContextualError } from './utils/errorUtils';
31
+ export type { Result } from './utils/result';
32
+ export { ok, err, toResult, toResultSync } from './utils/result';
33
+ export { InitializationStatus, AppStatus, isErrorStatus, isReadyStatus, isInProgressStatus, isAppReadyStatus, isAppInProgressStatus, hasWorkletStarted, canLoadWallet, hasWorkletStartedApp, canLoadWalletApp, getStatusMessage, getAppStatusMessage, getWorkletStatus, getCombinedStatus } from './utils/initializationState';
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @tetherto/wdk-react-native-core
3
+ *
4
+ * Core functionality for React Native wallets
5
+ * Provides wallet management, balance fetching, and worklet operations
6
+ */
7
+ export { isExtendedHRPC, asExtendedHRPC } from './types/hrpc';
8
+ // Provider (main entry point)
9
+ export { WdkAppProvider } from './provider/WdkAppProvider';
10
+ // Hooks (public API)
11
+ export { useWorklet } from './hooks/useWorklet';
12
+ export { useWallet } from './hooks/useWallet';
13
+ export { useWdkApp } from './hooks/useWdkApp';
14
+ export { useWalletManager } from './hooks/useWalletManager';
15
+ export { useBalance, useBalancesForWallet, useBalancesForWallets, useRefreshBalance, balanceQueryKeys } from './hooks/useBalance';
16
+ // Validation Utilities (for validating configs before use)
17
+ export { validateNetworkConfigs, validateTokenConfigs, validateBalanceRefreshInterval, validateAccountIndex, validateTokenAddress, } from './utils/validation';
18
+ // Zod Schemas (for runtime validation)
19
+ export { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, sparkAddressSchema, addressSchema, } from './utils/schemas';
20
+ // Type Guards (for runtime type checking)
21
+ export { isNetworkConfigs, isTokenConfigs, isEthereumAddress, isValidAccountIndex, isValidNetworkName, } from './utils/typeGuards';
22
+ // Services
23
+ export { WorkletLifecycleService } from './services/workletLifecycleService';
24
+ export { AddressService } from './services/addressService';
25
+ export { AccountService } from './services/accountService';
26
+ export { BalanceService } from './services/balanceService';
27
+ export { WalletSetupService } from './services/walletSetupService';
28
+ export { WalletSwitchingService } from './services/walletSwitchingService';
29
+ // Utility Functions
30
+ export { validateMnemonic } from './utils/mnemonicUtils';
31
+ export { convertBalanceToString, formatBalance, convertBigIntToString } from './utils/balanceUtils';
32
+ export { normalizeError, getErrorMessage, isErrorType, createContextualError } from './utils/errorUtils';
33
+ export { ok, err, toResult, toResultSync } from './utils/result';
34
+ // Initialization State Machine
35
+ export { InitializationStatus, AppStatus, isErrorStatus, isReadyStatus, isInProgressStatus, isAppReadyStatus, isAppInProgressStatus, hasWorkletStarted, canLoadWallet, hasWorkletStartedApp, canLoadWalletApp, getStatusMessage, getAppStatusMessage, getWorkletStatus, getCombinedStatus } from './utils/initializationState';
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7D,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,qBAAqB;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGjI,2DAA2D;AAC3D,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAE3B,uCAAuC;AACvC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,0CAA0C;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAE1E,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAIxG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEhE,+BAA+B;AAC/B,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * WdkAppProvider
3
+ *
4
+ * App-level orchestration provider that manages initialization state.
5
+ * Provides app-level status and initialization state via useWdkApp() hook.
6
+ *
7
+ * Responsibilities:
8
+ * - Manages worklet initialization state
9
+ * - Manages wallet initialization state
10
+ * - Provides combined app status (isReady, isInitializing, error)
11
+ * - Sets up QueryClientProvider for TanStack Query
12
+ * - Sets up SecureStorage
13
+ * - Handles AppState listeners for security
14
+ *
15
+ * Architecture:
16
+ * - Worklet state: Managed by workletStore (global, initialized once)
17
+ * - Wallet state: Managed by separate state machine (per-identifier, can load multiple)
18
+ * - Combined status: Derived from both worklet and wallet states
19
+ */
20
+ import React from 'react';
21
+ import { InitializationStatus, AppStatus } from '../utils/initializationState';
22
+ import type { NetworkConfigs, TokenConfigs } from '../types';
23
+ /**
24
+ * Context state exposed to consumers
25
+ *
26
+ * Purpose: App-level initialization state only. For wallet operations, use useWallet().
27
+ * For wallet lifecycle (create, load, import, delete), use useWalletManager().
28
+ *
29
+ * API Design:
30
+ * - `status`: Combined status for convenience (most common use case: "is app ready?")
31
+ * - `workletState`: Separate worklet state for flexibility (check worklet-specific conditions)
32
+ * - `walletState`: Separate wallet state for flexibility (check wallet-specific conditions)
33
+ *
34
+ * For simple cases, use `status`. For advanced cases needing granular control,
35
+ * use `workletState` and `walletState` directly.
36
+ */
37
+ export interface WdkAppContextValue {
38
+ /**
39
+ * Combined app status (convenience helper)
40
+ * Derived from workletState and walletState.
41
+ * Use this for common "is app ready?" checks.
42
+ */
43
+ status: AppStatus;
44
+ /**
45
+ * Worklet initialization status (global, initialized once)
46
+ * Use this when you need to check worklet initialization state specifically.
47
+ */
48
+ workletStatus: InitializationStatus;
49
+ /**
50
+ * Worklet state (global, initialized once)
51
+ * Use this when you need to check worklet-specific conditions.
52
+ */
53
+ workletState: {
54
+ /** Worklet is ready (started, not loading, no error) */
55
+ isReady: boolean;
56
+ /** Worklet is currently loading */
57
+ isLoading: boolean;
58
+ /** Worklet error message (null if no error) */
59
+ error: string | null;
60
+ };
61
+ /**
62
+ * Wallet state (per-identifier, can load multiple wallets)
63
+ * Use this when you need to check wallet-specific conditions.
64
+ */
65
+ walletState: {
66
+ /** Current wallet state */
67
+ status: 'not_loaded' | 'checking' | 'loading' | 'ready' | 'error';
68
+ /** Wallet identifier being operated on (null if not_loaded) */
69
+ identifier: string | null;
70
+ /** Wallet error (null if no error) */
71
+ error: Error | null;
72
+ };
73
+ /** Initialization in progress (convenience getter, equivalent to isInProgressStatus(status)) */
74
+ isInitializing: boolean;
75
+ /** App is ready (convenience getter, equivalent to isReadyStatus(status)) */
76
+ isReady: boolean;
77
+ /** Currently active wallet identifier from walletStore (null if no wallet is loaded) */
78
+ activeWalletId: string | null;
79
+ /** Wallet identifier being loaded (transient, only during loading operations) */
80
+ loadingWalletId: string | null;
81
+ /** Whether the wallet being loaded exists in secure storage (null = not checked yet, true = exists, false = doesn't exist) */
82
+ walletExists: boolean | null;
83
+ /** Initialization error if any (worklet or wallet error) - convenience getter */
84
+ error: Error | null;
85
+ /** Retry initialization after an error */
86
+ retry: () => void;
87
+ }
88
+ declare const WdkAppContext: React.Context<WdkAppContextValue | null>;
89
+ /**
90
+ * Provider props
91
+ */
92
+ export interface WdkAppProviderProps {
93
+ /** Network configurations */
94
+ networkConfigs: NetworkConfigs;
95
+ /** Token configurations for balance fetching */
96
+ tokenConfigs: TokenConfigs;
97
+ /** Enable automatic wallet initialization on app restart (default: true) */
98
+ enableAutoInitialization?: boolean;
99
+ /**
100
+ * Current user's identifier (typically email)
101
+ * Auto-initialization will NOT proceed if:
102
+ * - currentUserId is undefined/null (user identity not yet confirmed)
103
+ * - currentUserId doesn't match activeWalletId (wrong user's wallet)
104
+ *
105
+ * This prevents initializing with wrong user's wallet during account switches
106
+ */
107
+ currentUserId?: string | null;
108
+ /** Child components (app content) */
109
+ children: React.ReactNode;
110
+ }
111
+ export declare function WdkAppProvider({ networkConfigs, tokenConfigs, enableAutoInitialization, currentUserId, children, }: WdkAppProviderProps): React.JSX.Element;
112
+ export { WdkAppContext };