@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,526 @@
1
+ /**
2
+ * Wallet Manager Hook
3
+ *
4
+ * Consolidated hook for wallet setup, initialization, and lifecycle management.
5
+ * This is the ONLY hook for wallet lifecycle operations.
6
+ *
7
+ * PURPOSE: Use this hook for wallet setup/auth flows (creating new wallets,
8
+ * loading existing wallets, checking if wallet exists, deleting wallets, getting mnemonic).
9
+ *
10
+ * When to use which hook:
11
+ * - **App initialization state**: Use `useWdkApp()` to check if app is ready
12
+ * - **Wallet lifecycle** (create, load, import, delete): Use this hook (`useWalletManager()`)
13
+ * - **Wallet operations** (addresses, account methods): Use `useWallet()` AFTER initialization
14
+ * - **Balance fetching**: Use `useBalance()` hook with TanStack Query
15
+ *
16
+ * **Wallet Switching**: Use `useWallet({ walletId })` to switch wallets.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * // Check if app is ready first
21
+ * const { isReady } = useWdkApp()
22
+ *
23
+ * // Then use wallet manager for lifecycle operations
24
+ * // networkConfigs is optional - it will be retrieved from workletStore if not provided
25
+ * const {
26
+ * createWallet,
27
+ * initializeWallet,
28
+ * initializeFromMnemonic,
29
+ * hasWallet,
30
+ * deleteWallet,
31
+ * getMnemonic,
32
+ * createTemporaryWallet,
33
+ * isInitializing,
34
+ * error
35
+ * } = useWalletManager('user@example.com')
36
+ *
37
+ * // Create new wallet (persistent, requires biometrics)
38
+ * // networkConfigs can be passed here or retrieved from store
39
+ * await createWallet('user@example.com', networkConfigs)
40
+ *
41
+ * // Initialize wallet (create new or load existing)
42
+ * await initializeWallet({ createNew: true })
43
+ *
44
+ * // Load existing wallet (requires biometric authentication)
45
+ * await initializeWallet({ createNew: false })
46
+ *
47
+ * // Import from mnemonic
48
+ * await initializeFromMnemonic('word1 word2 ... word12')
49
+ *
50
+ * // Create temporary wallet for previewing addresses (no biometrics, not saved)
51
+ * await createTemporaryWallet()
52
+ *
53
+ * // Get mnemonic (requires biometric authentication if not cached)
54
+ * const mnemonic = await getMnemonic()
55
+ *
56
+ * // Delete wallet
57
+ * await deleteWallet()
58
+ * ```
59
+ */
60
+ import { useCallback, useMemo, useState } from 'react';
61
+ import { useShallow } from 'zustand/react/shallow';
62
+ import { WalletSetupService } from '../services/walletSetupService';
63
+ import { WorkletLifecycleService } from '../services/workletLifecycleService';
64
+ import { getWalletStore } from '../store/walletStore';
65
+ import { getWorkletStore } from '../store/workletStore';
66
+ import { updateWalletLoadingState, isWalletLoadingState, getWalletIdFromLoadingState } from '../store/walletStore';
67
+ import { withOperationMutex } from '../utils/operationMutex';
68
+ import { log, logError } from '../utils/logger';
69
+ export function useWalletManager(walletId, networkConfigs) {
70
+ const [error, setError] = useState(null);
71
+ // Local loading and error state for wallet list operations (ephemeral, only used in this hook)
72
+ const [isWalletListLoading, setIsWalletListLoading] = useState(false);
73
+ const [walletListError, setWalletListError] = useState(null);
74
+ const walletStore = getWalletStore();
75
+ const workletStore = getWorkletStore();
76
+ /**
77
+ * Get networkConfigs from parameter or workletStore
78
+ * Throws error if not available from either source
79
+ */
80
+ const getNetworkConfigs = useCallback(() => {
81
+ const networkConfigsFromStore = workletStore.getState().networkConfigs;
82
+ const effectiveNetworkConfigs = networkConfigs ?? networkConfigsFromStore;
83
+ if (!effectiveNetworkConfigs) {
84
+ throw new Error('networkConfigs is required. Either provide it as a parameter or ensure the worklet is started with networkConfigs.');
85
+ }
86
+ return effectiveNetworkConfigs;
87
+ }, [networkConfigs]);
88
+ // Note: workletStore removed from deps - it's a singleton that never changes
89
+ // Subscribe to wallet list state and loading state from Zustand
90
+ const walletListState = walletStore(useShallow((state) => ({
91
+ wallets: state.walletList,
92
+ activeWalletId: state.activeWalletId,
93
+ walletLoadingState: state.walletLoadingState,
94
+ })));
95
+ // Derive isInitializing from walletLoadingState (single source of truth)
96
+ // Check if the current walletId matches the loading state identifier
97
+ const isInitializing = useMemo(() => {
98
+ const loadingState = walletListState.walletLoadingState;
99
+ const currentWalletId = walletId || walletListState.activeWalletId;
100
+ const loadingWalletId = getWalletIdFromLoadingState(loadingState);
101
+ // Only consider it initializing if:
102
+ // 1. The loading state indicates loading/checking
103
+ // 2. The walletId matches (or no walletId specified, meaning we're tracking active wallet)
104
+ return isWalletLoadingState(loadingState) &&
105
+ (currentWalletId === null || currentWalletId === loadingWalletId || walletId === undefined);
106
+ }, [walletListState.walletLoadingState, walletId, walletListState.activeWalletId]);
107
+ /**
108
+ * Initialize wallet - either create new or load existing
109
+ *
110
+ * @param options - Wallet initialization options
111
+ * @param options.createNew - If true, creates a new wallet; if false, loads existing wallet
112
+ * @param options.walletId - Optional walletId override (defaults to hook's walletId)
113
+ */
114
+ const initializeWallet = useCallback(async (options = {}) => {
115
+ setError(null);
116
+ const targetWalletId = options.walletId ?? walletId;
117
+ const walletStore = getWalletStore();
118
+ const effectiveNetworkConfigs = getNetworkConfigs();
119
+ try {
120
+ // Check if wallet is already ready before attempting to initialize
121
+ // This prevents unnecessary initialization calls when the wallet is already loaded
122
+ if (targetWalletId) {
123
+ const currentWalletState = walletStore.getState().walletLoadingState;
124
+ if (currentWalletState.type === 'ready' && currentWalletState.identifier === targetWalletId) {
125
+ log('[useWalletManager] Wallet already ready - skipping initialization', { targetWalletId });
126
+ return;
127
+ }
128
+ }
129
+ // Update loading state in store (single source of truth)
130
+ if (targetWalletId) {
131
+ walletStore.setState((prev) => updateWalletLoadingState(prev, {
132
+ type: 'loading',
133
+ identifier: targetWalletId,
134
+ walletExists: true,
135
+ }));
136
+ }
137
+ await WalletSetupService.initializeWallet(effectiveNetworkConfigs, {
138
+ ...options,
139
+ walletId: targetWalletId,
140
+ });
141
+ // Mark as ready on success
142
+ // Wallet is ready when initializeWDK() completes successfully, even if addresses don't exist yet
143
+ // (Addresses are lazy-loaded when getAddress() is called)
144
+ // This matches the pattern used in WalletSwitchingService.switchToWallet()
145
+ if (targetWalletId) {
146
+ walletStore.setState((prev) => {
147
+ const currentState = prev.walletLoadingState;
148
+ const addresses = prev.addresses[targetWalletId];
149
+ const hasAddresses = !!(addresses && Object.keys(addresses).length > 0);
150
+ // If addresses exist, we can set to ready if state allows it
151
+ // WdkAppProvider will also handle transitions when addresses appear
152
+ if (hasAddresses) {
153
+ // Only set to ready if current state allows the transition
154
+ // Valid transitions to ready: from 'loading' or 'checking'
155
+ if (currentState.type === 'loading' || currentState.type === 'checking') {
156
+ const readyStateUpdate = updateWalletLoadingState(prev, {
157
+ type: 'ready',
158
+ identifier: targetWalletId,
159
+ });
160
+ // Also set activeWalletId to prevent WdkAppProvider from resetting state
161
+ return {
162
+ ...readyStateUpdate,
163
+ activeWalletId: targetWalletId,
164
+ };
165
+ }
166
+ // If state is 'not_loaded', let WdkAppProvider handle it (it will transition when addresses exist)
167
+ // If state is already 'ready', don't change it
168
+ return prev;
169
+ }
170
+ // If no addresses yet, set to ready if state is 'loading' or 'checking' (normal case)
171
+ // The wallet is ready when WDK is initialized with correct credentials, addresses can be fetched lazily
172
+ // Note: Cannot transition from 'not_loaded' directly to 'ready' - must go through 'loading' first
173
+ if (currentState.type === 'loading' || currentState.type === 'checking') {
174
+ const readyStateUpdate = updateWalletLoadingState(prev, {
175
+ type: 'ready',
176
+ identifier: targetWalletId,
177
+ });
178
+ // Also set activeWalletId to prevent WdkAppProvider from resetting state
179
+ return {
180
+ ...readyStateUpdate,
181
+ activeWalletId: targetWalletId,
182
+ };
183
+ }
184
+ else if (currentState.type === 'not_loaded') {
185
+ // State was reset to not_loaded by WdkAppProvider
186
+ // We need to transition through 'loading' first, then 'ready'
187
+ // Since initializeWDK() already completed successfully, we can do both transitions
188
+ // in sequence within the same setState call
189
+ log('[useWalletManager] State reset to not_loaded, transitioning through loading to ready', {
190
+ targetWalletId,
191
+ hasAddresses,
192
+ });
193
+ // First transition: not_loaded -> loading
194
+ const loadingStateUpdate = updateWalletLoadingState(prev, {
195
+ type: 'loading',
196
+ identifier: targetWalletId,
197
+ walletExists: true,
198
+ });
199
+ // Second transition: loading -> ready (using the updated state)
200
+ const readyStateUpdate = updateWalletLoadingState({ ...prev, ...loadingStateUpdate }, {
201
+ type: 'ready',
202
+ identifier: targetWalletId,
203
+ });
204
+ // Also set activeWalletId to prevent WdkAppProvider from resetting state
205
+ return {
206
+ ...readyStateUpdate,
207
+ activeWalletId: targetWalletId,
208
+ };
209
+ }
210
+ else {
211
+ // State is 'ready' or 'error' - don't change it
212
+ log('[useWalletManager] Wallet already in final state, not changing', {
213
+ currentState: currentState.type,
214
+ targetWalletId,
215
+ hasAddresses,
216
+ });
217
+ return prev;
218
+ }
219
+ });
220
+ }
221
+ }
222
+ catch (err) {
223
+ const errorMessage = err instanceof Error ? err.message : String(err);
224
+ const errorObj = err instanceof Error ? err : new Error(String(err));
225
+ logError('Failed to initialize wallet:', err);
226
+ setError(errorMessage);
227
+ // Cleanup state on error
228
+ if (targetWalletId) {
229
+ walletStore.setState((prev) => updateWalletLoadingState(prev, {
230
+ type: 'error',
231
+ identifier: targetWalletId,
232
+ error: errorObj,
233
+ }));
234
+ }
235
+ throw err;
236
+ }
237
+ }, [getNetworkConfigs, walletId]);
238
+ /**
239
+ * Check if wallet exists
240
+ *
241
+ * @param walletId - Optional walletId override (defaults to hook's walletId)
242
+ * @returns Promise resolving to true if wallet exists, false otherwise
243
+ */
244
+ const hasWallet = useCallback(async (walletIdParam) => {
245
+ return WalletSetupService.hasWallet(walletIdParam ?? walletId);
246
+ }, [walletId]);
247
+ /**
248
+ * Initialize wallet from mnemonic seedphrase
249
+ *
250
+ * @param mnemonic - Mnemonic phrase to import
251
+ * @param walletId - Optional walletId override (defaults to hook's walletId)
252
+ */
253
+ const initializeFromMnemonic = useCallback(async (mnemonic, walletIdParam) => {
254
+ setError(null);
255
+ const targetWalletId = walletIdParam ?? walletId;
256
+ const walletStore = getWalletStore();
257
+ const effectiveNetworkConfigs = getNetworkConfigs();
258
+ try {
259
+ // Update loading state in store (single source of truth)
260
+ if (targetWalletId) {
261
+ walletStore.setState((prev) => updateWalletLoadingState(prev, {
262
+ type: 'loading',
263
+ identifier: targetWalletId,
264
+ walletExists: false, // New wallet from mnemonic
265
+ }));
266
+ }
267
+ await WalletSetupService.initializeFromMnemonic(effectiveNetworkConfigs, mnemonic, targetWalletId);
268
+ // Mark as ready on success
269
+ if (targetWalletId) {
270
+ walletStore.setState((prev) => updateWalletLoadingState(prev, {
271
+ type: 'ready',
272
+ identifier: targetWalletId,
273
+ }));
274
+ }
275
+ }
276
+ catch (err) {
277
+ const errorMessage = err instanceof Error ? err.message : String(err);
278
+ const errorObj = err instanceof Error ? err : new Error(String(err));
279
+ logError('Failed to initialize wallet from mnemonic:', err);
280
+ setError(errorMessage);
281
+ // Cleanup state on error
282
+ if (targetWalletId) {
283
+ walletStore.setState((prev) => updateWalletLoadingState(prev, {
284
+ type: 'error',
285
+ identifier: targetWalletId,
286
+ error: errorObj,
287
+ }));
288
+ }
289
+ throw err;
290
+ }
291
+ }, [getNetworkConfigs, walletId]);
292
+ /**
293
+ * Delete wallet
294
+ *
295
+ * @param walletId - Optional walletId override (defaults to hook's walletId)
296
+ * If not provided, deletes the default wallet
297
+ */
298
+ const deleteWallet = useCallback(async (walletIdParam) => {
299
+ setError(null);
300
+ try {
301
+ const targetWalletId = walletIdParam ?? walletId;
302
+ if (!targetWalletId) {
303
+ throw new Error('Wallet ID is required for deletion');
304
+ }
305
+ await WalletSetupService.deleteWallet(targetWalletId);
306
+ // Remove from wallet list and clear all wallet-specific data
307
+ walletStore.setState((state) => {
308
+ const wasActive = state.activeWalletId === targetWalletId;
309
+ // Clear all wallet-specific data (only if walletId exists)
310
+ const remainingAddresses = { ...state.addresses };
311
+ const remainingBalances = { ...state.balances };
312
+ const remainingAccountList = { ...state.accountList };
313
+ const remainingLastBalanceUpdate = { ...state.lastBalanceUpdate };
314
+ const remainingWalletLoading = { ...state.walletLoading };
315
+ const remainingBalanceLoading = { ...state.balanceLoading };
316
+ delete remainingAddresses[targetWalletId];
317
+ delete remainingBalances[targetWalletId];
318
+ delete remainingAccountList[targetWalletId];
319
+ delete remainingLastBalanceUpdate[targetWalletId];
320
+ delete remainingWalletLoading[targetWalletId];
321
+ delete remainingBalanceLoading[targetWalletId];
322
+ return {
323
+ walletList: state.walletList.filter((w) => w.identifier !== targetWalletId),
324
+ activeWalletId: wasActive ? null : state.activeWalletId,
325
+ // Reset loading state if this was the active wallet
326
+ walletLoadingState: wasActive ? { type: 'not_loaded' } : state.walletLoadingState,
327
+ // Clear all wallet-specific data
328
+ addresses: remainingAddresses,
329
+ balances: remainingBalances,
330
+ accountList: remainingAccountList,
331
+ lastBalanceUpdate: remainingLastBalanceUpdate,
332
+ walletLoading: remainingWalletLoading,
333
+ balanceLoading: remainingBalanceLoading,
334
+ };
335
+ });
336
+ log(`[useWalletManager] Deleted wallet and cleared all data: ${targetWalletId}`);
337
+ }
338
+ catch (err) {
339
+ const errorMessage = err instanceof Error ? err.message : String(err);
340
+ logError('Failed to delete wallet:', err);
341
+ setError(errorMessage);
342
+ throw err;
343
+ }
344
+ }, [walletId]);
345
+ /**
346
+ * Get mnemonic phrase from wallet
347
+ * Requires biometric authentication if credentials are not cached
348
+ *
349
+ * @param walletId - Optional walletId override (defaults to hook's walletId)
350
+ * @returns Promise resolving to mnemonic phrase or null if not found
351
+ */
352
+ const getMnemonic = useCallback(async (walletIdParam) => {
353
+ try {
354
+ return await WalletSetupService.getMnemonic(walletIdParam ?? walletId);
355
+ }
356
+ catch (err) {
357
+ const errorMessage = err instanceof Error ? err.message : String(err);
358
+ logError('Failed to get mnemonic:', err);
359
+ throw err;
360
+ }
361
+ }, [walletId]);
362
+ /**
363
+ * Clear error state
364
+ */
365
+ const clearError = useCallback(() => {
366
+ setError(null);
367
+ }, []);
368
+ /**
369
+ * Clear active wallet ID
370
+ * Useful when switching users or logging out to prevent auto-initialization with wrong wallet
371
+ */
372
+ const clearActiveWallet = useCallback(() => {
373
+ walletStore.setState({ activeWalletId: null });
374
+ log('[useWalletManager] Cleared active wallet ID');
375
+ }, []);
376
+ /**
377
+ * Create a temporary wallet for previewing addresses
378
+ * This creates a wallet in memory only (no biometrics, not saved to secure storage)
379
+ * Useful for previewing addresses before committing to creating a real wallet
380
+ */
381
+ const createTemporaryWallet = useCallback(async () => {
382
+ return withOperationMutex('createTemporaryWallet', async () => {
383
+ setError(null);
384
+ try {
385
+ const effectiveNetworkConfigs = getNetworkConfigs();
386
+ // Ensure worklet is started (auto-start if needed)
387
+ await WorkletLifecycleService.ensureWorkletStarted(effectiveNetworkConfigs, { autoStart: true });
388
+ // Generate entropy and encrypt (no biometrics, no keychain save)
389
+ const result = await WorkletLifecycleService.generateEntropyAndEncrypt();
390
+ // Initialize WDK with temporary credentials
391
+ await WorkletLifecycleService.initializeWDK({
392
+ encryptionKey: result.encryptionKey,
393
+ encryptedSeed: result.encryptedSeedBuffer,
394
+ });
395
+ // Don't update activeWalletId for temporary wallet (it's not a real wallet)
396
+ // Temporary wallets don't affect walletLoadingState
397
+ log('[useWalletManager] Temporary wallet created successfully');
398
+ }
399
+ catch (err) {
400
+ const errorMessage = err instanceof Error ? err.message : String(err);
401
+ const errorObj = err instanceof Error ? err : new Error(String(err));
402
+ logError('[useWalletManager] Failed to create temporary wallet:', err);
403
+ setError(errorMessage);
404
+ throw err;
405
+ }
406
+ });
407
+ }, [getNetworkConfigs]);
408
+ /**
409
+ * Check if a wallet exists (for wallet list operations)
410
+ */
411
+ const checkWallet = useCallback(async (walletId) => {
412
+ try {
413
+ return await WalletSetupService.hasWallet(walletId);
414
+ }
415
+ catch (err) {
416
+ logError('Failed to check wallet:', err);
417
+ return false;
418
+ }
419
+ }, []);
420
+ /**
421
+ * Refresh the wallet list
422
+ */
423
+ const refreshWalletList = useCallback(async (knownIdentifiers) => {
424
+ setIsWalletListLoading(true);
425
+ setWalletListError(null);
426
+ try {
427
+ const identifiersToCheck = knownIdentifiers || [];
428
+ const currentActiveId = walletStore.getState().activeWalletId;
429
+ // If no known identifiers provided, check default wallet
430
+ if (identifiersToCheck.length === 0) {
431
+ const defaultExists = await checkWallet('default');
432
+ walletStore.setState({
433
+ walletList: [{ identifier: 'default', exists: defaultExists, isActive: currentActiveId === 'default' }],
434
+ });
435
+ }
436
+ else {
437
+ // Check all known identifiers
438
+ const walletChecks = await Promise.all(identifiersToCheck.map(async (id) => ({
439
+ identifier: id,
440
+ exists: await checkWallet(id),
441
+ isActive: currentActiveId === id,
442
+ })));
443
+ walletStore.setState({ walletList: walletChecks });
444
+ }
445
+ }
446
+ catch (err) {
447
+ const errorMessage = err instanceof Error ? err.message : String(err);
448
+ logError('Failed to refresh wallet list:', err);
449
+ setWalletListError(errorMessage);
450
+ }
451
+ finally {
452
+ setIsWalletListLoading(false);
453
+ }
454
+ }, [checkWallet]);
455
+ /**
456
+ * Create a new wallet and add it to the wallet list
457
+ */
458
+ const createWallet = useCallback(async (walletId, walletNetworkConfigs) => {
459
+ setIsWalletListLoading(true);
460
+ setWalletListError(null);
461
+ try {
462
+ // Check if wallet already exists
463
+ const exists = await checkWallet(walletId);
464
+ if (exists) {
465
+ throw new Error(`Wallet with walletId "${walletId}" already exists`);
466
+ }
467
+ // Use provided networkConfigs or get from store
468
+ const effectiveNetworkConfigs = walletNetworkConfigs ?? getNetworkConfigs();
469
+ // Create wallet using WalletSetupService
470
+ await WalletSetupService.createNewWallet(effectiveNetworkConfigs, walletId);
471
+ // Add to wallet list and set as active wallet
472
+ walletStore.setState((state) => ({
473
+ walletList: [...state.walletList, { identifier: walletId, exists: true, isActive: true }],
474
+ activeWalletId: walletId, // Set as active wallet so WdkAppProvider can auto-initialize on restart
475
+ }));
476
+ log(`Created new wallet: ${walletId} and set as active`);
477
+ }
478
+ catch (err) {
479
+ const errorMessage = err instanceof Error ? err.message : String(err);
480
+ logError('Failed to create wallet:', err);
481
+ setWalletListError(errorMessage);
482
+ throw err;
483
+ }
484
+ finally {
485
+ setIsWalletListLoading(false);
486
+ }
487
+ }, [checkWallet]);
488
+ // Memoize return object to prevent unnecessary re-renders
489
+ return useMemo(() => ({
490
+ initializeWallet,
491
+ initializeFromMnemonic,
492
+ hasWallet,
493
+ deleteWallet,
494
+ getMnemonic,
495
+ createTemporaryWallet,
496
+ isInitializing, // Derived from walletLoadingState (single source of truth)
497
+ error,
498
+ clearError,
499
+ clearActiveWallet,
500
+ // Wallet list operations
501
+ wallets: walletListState.wallets,
502
+ activeWalletId: walletListState.activeWalletId,
503
+ createWallet,
504
+ refreshWalletList,
505
+ isWalletListLoading,
506
+ walletListError,
507
+ }), [
508
+ initializeWallet,
509
+ initializeFromMnemonic,
510
+ hasWallet,
511
+ deleteWallet,
512
+ getMnemonic,
513
+ createTemporaryWallet,
514
+ isInitializing,
515
+ error,
516
+ clearError,
517
+ clearActiveWallet,
518
+ walletListState.wallets,
519
+ walletListState.activeWalletId,
520
+ createWallet,
521
+ refreshWalletList,
522
+ isWalletListLoading,
523
+ walletListError,
524
+ ]);
525
+ }
526
+ //# sourceMappingURL=useWalletManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletManager.js","sourceRoot":"","sources":["../../src/hooks/useWalletManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AA2C/C,MAAM,UAAU,gBAAgB,CAC9B,QAAiB,EACjB,cAA+B;IAE/B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAEvD,+FAA+F;IAC/F,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAE3E,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IAEtC;;;OAGG;IACH,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAmB,EAAE;QACzD,MAAM,uBAAuB,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAA;QACtE,MAAM,uBAAuB,GAAG,cAAc,IAAI,uBAAuB,CAAA;QAEzE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,oHAAoH,CACrH,CAAA;QACH,CAAC;QAED,OAAO,uBAAuB,CAAA;IAChC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;IACpB,6EAA6E;IAE7E,gEAAgE;IAChE,MAAM,eAAe,GAAG,WAAW,CACjC,UAAU,CAAC,CAAC,KAAiD,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,KAAK,CAAC,UAAU;QACzB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC,CACJ,CAAA;IAED,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAA;QACvD,MAAM,eAAe,GAAG,QAAQ,IAAI,eAAe,CAAC,cAAc,CAAA;QAClE,MAAM,eAAe,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAA;QAEjE,oCAAoC;QACpC,kDAAkD;QAClD,2FAA2F;QAC3F,OAAO,oBAAoB,CAAC,YAAY,CAAC;YAClC,CAAC,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,eAAe,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAA;IACpG,CAAC,EAAE,CAAC,eAAe,CAAC,kBAAkB,EAAE,QAAQ,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,CAAA;IAElF;;;;;;OAMG;IACH,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,UAAsD,EAAE,EAAE,EAAE;QACjE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAA;QACnD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;QACpC,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,CAAA;QAEnD,IAAI,CAAC;YACH,mEAAmE;YACnE,mFAAmF;YACnF,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,kBAAkB,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAA;gBACpE,IAAI,kBAAkB,CAAC,IAAI,KAAK,OAAO,IAAI,kBAAkB,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;oBAC5F,GAAG,CAAC,mEAAmE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAA;oBAC5F,OAAM;gBACR,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBAC5D,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,cAAc;oBAC1B,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC,CAAA;YACL,CAAC;YAED,MAAM,kBAAkB,CAAC,gBAAgB,CACvC,uBAAuB,EACvB;gBACE,GAAG,OAAO;gBACV,QAAQ,EAAE,cAAc;aACzB,CACF,CAAA;YAED,2BAA2B;YAC3B,iGAAiG;YACjG,0DAA0D;YAC1D,2EAA2E;YAC3E,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAA;oBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;oBAChD,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAEvE,6DAA6D;oBAC7D,oEAAoE;oBACpE,IAAI,YAAY,EAAE,CAAC;wBACjB,2DAA2D;wBAC3D,2DAA2D;wBAC3D,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACxE,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,IAAI,EAAE;gCACtD,IAAI,EAAE,OAAO;gCACb,UAAU,EAAE,cAAc;6BAC3B,CAAC,CAAA;4BACF,yEAAyE;4BACzE,OAAO;gCACL,GAAG,gBAAgB;gCACnB,cAAc,EAAE,cAAc;6BAC/B,CAAA;wBACH,CAAC;wBACD,mGAAmG;wBACnG,+CAA+C;wBAC/C,OAAO,IAAI,CAAA;oBACb,CAAC;oBAED,sFAAsF;oBACtF,wGAAwG;oBACxG,kGAAkG;oBAClG,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACxE,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,IAAI,EAAE;4BACtD,IAAI,EAAE,OAAO;4BACb,UAAU,EAAE,cAAc;yBAC3B,CAAC,CAAA;wBACF,yEAAyE;wBACzE,OAAO;4BACL,GAAG,gBAAgB;4BACnB,cAAc,EAAE,cAAc;yBAC/B,CAAA;oBACH,CAAC;yBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC9C,kDAAkD;wBAClD,8DAA8D;wBAC9D,mFAAmF;wBACnF,4CAA4C;wBAC5C,GAAG,CAAC,sFAAsF,EAAE;4BAC1F,cAAc;4BACd,YAAY;yBACb,CAAC,CAAA;wBACF,0CAA0C;wBAC1C,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,EAAE;4BACxD,IAAI,EAAE,SAAS;4BACf,UAAU,EAAE,cAAc;4BAC1B,YAAY,EAAE,IAAI;yBACnB,CAAC,CAAA;wBACF,gEAAgE;wBAChE,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,EAAE,GAAG,IAAI,EAAE,GAAG,kBAAkB,EAAiB,EACjD;4BACE,IAAI,EAAE,OAAO;4BACb,UAAU,EAAE,cAAc;yBAC3B,CACF,CAAA;wBACD,yEAAyE;wBACzE,OAAO;4BACL,GAAG,gBAAgB;4BACnB,cAAc,EAAE,cAAc;yBAC/B,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,gDAAgD;wBAChD,GAAG,CAAC,gEAAgE,EAAE;4BACpE,YAAY,EAAE,YAAY,CAAC,IAAI;4BAC/B,cAAc;4BACd,YAAY;yBACb,CAAC,CAAA;wBACF,OAAO,IAAI,CAAA;oBACb,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACpE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;YAC7C,QAAQ,CAAC,YAAY,CAAC,CAAA;YAEtB,yBAAyB;YACzB,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBAC5D,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,cAAc;oBAC1B,KAAK,EAAE,QAAQ;iBAChB,CAAC,CAAC,CAAA;YACL,CAAC;YAED,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,EACD,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAC9B,CAAA;IAED;;;;;OAKG;IACH,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,EAAE,aAAsB,EAAoB,EAAE;QACjD,OAAO,kBAAkB,CAAC,SAAS,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAA;IAChE,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED;;;;;OAKG;IACH,MAAM,sBAAsB,GAAG,WAAW,CACxC,KAAK,EAAE,QAAgB,EAAE,aAAsB,EAAE,EAAE;QACjD,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,cAAc,GAAG,aAAa,IAAI,QAAQ,CAAA;QAChD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;QACpC,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,CAAA;QAEnD,IAAI,CAAC;YACH,yDAAyD;YACzD,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBAC5D,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,cAAc;oBAC1B,YAAY,EAAE,KAAK,EAAE,2BAA2B;iBACjD,CAAC,CAAC,CAAA;YACL,CAAC;YAED,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,uBAAuB,EACvB,QAAQ,EACR,cAAc,CACf,CAAA;YAED,2BAA2B;YAC3B,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBAC5D,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,cAAc;iBAC3B,CAAC,CAAC,CAAA;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACpE,QAAQ,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAA;YAC3D,QAAQ,CAAC,YAAY,CAAC,CAAA;YAEtB,yBAAyB;YACzB,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBAC5D,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,cAAc;oBAC1B,KAAK,EAAE,QAAQ;iBAChB,CAAC,CAAC,CAAA;YACL,CAAC;YAED,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,EACD,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAC9B,CAAA;IAED;;;;;OAKG;IACH,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,aAAsB,EAAE,EAAE;QAC/B,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,aAAa,IAAI,QAAQ,CAAA;YAChD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,MAAM,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YAErD,6DAA6D;YAC7D,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAiD,EAAE,EAAE;gBACzE,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,KAAK,cAAc,CAAA;gBAEzD,2DAA2D;gBAC3D,MAAM,kBAAkB,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;gBACjD,MAAM,iBAAiB,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAC/C,MAAM,oBAAoB,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;gBACrD,MAAM,0BAA0B,GAAG,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAA;gBACjE,MAAM,sBAAsB,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;gBACzD,MAAM,uBAAuB,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAA;gBAE3D,OAAO,kBAAkB,CAAC,cAAc,CAAC,CAAA;gBACzC,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAA;gBACxC,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAA;gBAC3C,OAAO,0BAA0B,CAAC,cAAc,CAAC,CAAA;gBACjD,OAAO,sBAAsB,CAAC,cAAc,CAAC,CAAA;gBAC7C,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAA;gBAE9C,OAAO;oBACL,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAA4C,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC;oBACtH,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;oBACvD,oDAAoD;oBACpD,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB;oBACjF,iCAAiC;oBACjC,SAAS,EAAE,kBAAkB;oBAC7B,QAAQ,EAAE,iBAAiB;oBAC3B,WAAW,EAAE,oBAAoB;oBACjC,iBAAiB,EAAE,0BAA0B;oBAC7C,aAAa,EAAE,sBAAsB;oBACrC,cAAc,EAAE,uBAAuB;iBACxC,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,2DAA2D,cAAc,EAAE,CAAC,CAAA;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAClD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;YACzC,QAAQ,CAAC,YAAY,CAAC,CAAA;YACtB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED;;;;;;OAMG;IACH,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,aAAsB,EAA0B,EAAE;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,kBAAkB,CAAC,WAAW,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAA;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAClD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;YACxC,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED;;OAEG;IACH,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN;;;OAGG;IACH,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,WAAW,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,GAAG,CAAC,6CAA6C,CAAC,CAAA;IACpD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN;;;;OAIG;IACH,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACnD,OAAO,kBAAkB,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YAC5D,QAAQ,CAAC,IAAI,CAAC,CAAA;YAEd,IAAI,CAAC;gBACH,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,CAAA;gBAEnD,mDAAmD;gBACnD,MAAM,uBAAuB,CAAC,oBAAoB,CAChD,uBAAuB,EACvB,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;gBAED,iEAAiE;gBACjE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,yBAAyB,EAAE,CAAA;gBAExE,4CAA4C;gBAC5C,MAAM,uBAAuB,CAAC,aAAa,CAAC;oBAC1C,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,aAAa,EAAE,MAAM,CAAC,mBAAmB;iBAC1C,CAAC,CAAA;gBAEF,4EAA4E;gBAC5E,oDAAoD;gBACpD,GAAG,CAAC,0DAA0D,CAAC,CAAA;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACrE,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBACpE,QAAQ,CAAC,uDAAuD,EAAE,GAAG,CAAC,CAAA;gBACtE,QAAQ,CAAC,YAAY,CAAC,CAAA;gBACtB,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEvB;;OAEG;IACH,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,QAAgB,EAAoB,EAAE;QAC3E,IAAI,CAAC;YACH,OAAO,MAAM,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;YACxC,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN;;OAEG;IACH,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,EAAE,gBAA2B,EAAE,EAAE;QAC1E,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC5B,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,gBAAgB,IAAI,EAAE,CAAA;YACjD,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAA;YAE7D,yDAAyD;YACzD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAA;gBAClD,WAAW,CAAC,QAAQ,CAAC;oBACnB,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;iBACxG,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,8BAA8B;gBAC9B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACpC,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,MAAM,WAAW,CAAC,EAAE,CAAC;oBAC7B,QAAQ,EAAE,eAAe,KAAK,EAAE;iBACjC,CAAC,CAAC,CACJ,CAAA;gBACD,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACrE,QAAQ,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAA;QAClC,CAAC;gBAAS,CAAC;YACT,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAGjB;;OAEG;IACH,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,QAAgB,EAAE,oBAAqC,EAAE,EAAE;QACjG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC5B,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAExB,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAA;YAC1C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,kBAAkB,CAAC,CAAA;YACtE,CAAC;YAED,gDAAgD;YAChD,MAAM,uBAAuB,GAAG,oBAAoB,IAAI,iBAAiB,EAAE,CAAA;YAE3E,yCAAyC;YACzC,MAAM,kBAAkB,CAAC,eAAe,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAA;YAE3E,8CAA8C;YAC9C,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAiD,EAAE,EAAE,CAAC,CAAC;gBAC3E,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACzF,cAAc,EAAE,QAAQ,EAAE,wEAAwE;aACnG,CAAC,CAAC,CAAA;YAEH,GAAG,CAAC,uBAAuB,QAAQ,oBAAoB,CAAC,CAAA;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACrE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;YACzC,kBAAkB,CAAC,YAAY,CAAC,CAAA;YAChC,MAAM,GAAG,CAAA;QACX,CAAC;gBAAS,CAAC;YACT,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,0DAA0D;IAC1D,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,gBAAgB;QAChB,sBAAsB;QACtB,SAAS;QACT,YAAY;QACZ,WAAW;QACX,qBAAqB;QACrB,cAAc,EAAE,2DAA2D;QAC3E,KAAK;QACL,UAAU;QACV,iBAAiB;QACjB,yBAAyB;QACzB,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,eAAe;KAChB,CAAC,EACF;QACE,gBAAgB;QAChB,sBAAsB;QACtB,SAAS;QACT,YAAY;QACZ,WAAW;QACX,qBAAqB;QACrB,cAAc;QACd,KAAK;QACL,UAAU;QACV,iBAAiB;QACjB,eAAe,CAAC,OAAO;QACvB,eAAe,CAAC,cAAc;QAC9B,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,eAAe;KAChB,CACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,66 @@
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 type { WdkAppContextValue } from '../provider/WdkAppProvider';
60
+ /**
61
+ * Hook to access WdkAppProvider context
62
+ *
63
+ * @returns WdkApp context value with initialization state
64
+ * @throws Error if used outside WdkAppProvider
65
+ */
66
+ export declare function useWdkApp(): WdkAppContextValue;