@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,152 @@
1
+ /**
2
+ * Zod Schemas for Runtime Validation
3
+ *
4
+ * Provides Zod schemas for all WDK types to replace manual if/else type guards.
5
+ * These schemas provide better error messages and are easier to maintain.
6
+ */
7
+ import { z } from 'zod';
8
+ /**
9
+ * Ethereum address schema (0x followed by 40 hex characters)
10
+ */
11
+ export const ethereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/, {
12
+ message: 'Must be a valid Ethereum address (0x followed by 40 hex characters)',
13
+ });
14
+ /**
15
+ * Spark address schema (Bech32 format: spark1/sparkt1/sparkrt1 followed by base32 characters)
16
+ */
17
+ export const sparkAddressSchema = z.string().regex(/^spark(1|t1|rt1|test1)[a-z0-9]+$/, {
18
+ message: 'Must be a valid Spark address (spark1/sparkt1/sparkrt1 followed by base32 characters)',
19
+ }).min(14).max(90);
20
+ /**
21
+ * Address schema (Ethereum or Spark)
22
+ */
23
+ export const addressSchema = z.union([ethereumAddressSchema, sparkAddressSchema]);
24
+ /**
25
+ * Network configuration schema
26
+ */
27
+ export const networkConfigSchema = z.object({
28
+ chainId: z.number().int().positive(),
29
+ blockchain: z.string().min(1),
30
+ provider: z.string().min(1).optional(),
31
+ bundlerUrl: z.string().min(1).optional(),
32
+ paymasterUrl: z.string().min(1).optional(),
33
+ paymasterAddress: ethereumAddressSchema.optional(),
34
+ entryPointAddress: ethereumAddressSchema.optional(),
35
+ transferMaxFee: z.number().nonnegative().optional(),
36
+ });
37
+ /**
38
+ * Network configurations schema
39
+ */
40
+ export const networkConfigsSchema = z.record(z.string().regex(/^[a-zA-Z0-9_-]+$/, {
41
+ message: 'Network name must contain only alphanumeric characters, hyphens, and underscores',
42
+ }), networkConfigSchema).refine((configs) => Object.keys(configs).length > 0, {
43
+ message: 'NetworkConfigs must contain at least one network',
44
+ });
45
+ /**
46
+ * Token configuration schema
47
+ */
48
+ export const tokenConfigSchema = z.object({
49
+ symbol: z.string().min(1),
50
+ name: z.string().min(1),
51
+ decimals: z.number().int().min(0).max(18),
52
+ address: z.union([ethereumAddressSchema, z.null()]),
53
+ });
54
+ /**
55
+ * Network tokens schema
56
+ */
57
+ export const networkTokensSchema = z.object({
58
+ native: tokenConfigSchema,
59
+ tokens: z.array(tokenConfigSchema),
60
+ });
61
+ /**
62
+ * Token configurations schema
63
+ */
64
+ export const tokenConfigsSchema = z.record(z.string().min(1), networkTokensSchema).refine((configs) => Object.keys(configs).length > 0, {
65
+ message: 'TokenConfigs must contain at least one network',
66
+ });
67
+ /**
68
+ * Account index schema
69
+ */
70
+ export const accountIndexSchema = z.number().int().nonnegative();
71
+ /**
72
+ * Network name schema
73
+ */
74
+ export const networkNameSchema = z.string().regex(/^[a-zA-Z0-9_-]+$/, {
75
+ message: 'Network name must contain only alphanumeric characters, hyphens, and underscores',
76
+ }).min(1);
77
+ /**
78
+ * Balance string schema (valid number string)
79
+ */
80
+ export const balanceStringSchema = z.string().regex(/^-?\d+(\.\d+)?$/, {
81
+ message: 'Balance must be a valid number string',
82
+ });
83
+ /**
84
+ * Wallet addresses schema
85
+ * Maps network -> accountIndex -> address
86
+ */
87
+ export const walletAddressesSchema = z.record(networkNameSchema, z.record(z.string().transform((val) => {
88
+ const num = parseInt(val, 10);
89
+ if (isNaN(num) || num < 0) {
90
+ throw new Error('Account index must be a non-negative integer');
91
+ }
92
+ return num;
93
+ }), addressSchema));
94
+ /**
95
+ * Wallet balances schema
96
+ * Maps network -> accountIndex -> tokenAddress -> balance
97
+ */
98
+ export const walletBalancesSchema = z.record(networkNameSchema, z.record(z.string().transform((val) => {
99
+ const num = parseInt(val, 10);
100
+ if (isNaN(num) || num < 0) {
101
+ throw new Error('Account index must be a non-negative integer');
102
+ }
103
+ return num;
104
+ }), z.record(z.string(), balanceStringSchema)));
105
+ /**
106
+ * Balance loading states schema
107
+ * Maps "network-accountIndex-tokenAddress" -> boolean
108
+ */
109
+ export const balanceLoadingStatesSchema = z.record(z.string(), z.boolean());
110
+ /**
111
+ * Balance fetch result schema
112
+ */
113
+ export const balanceFetchResultSchema = z.object({
114
+ success: z.boolean(),
115
+ network: networkNameSchema,
116
+ accountIndex: accountIndexSchema,
117
+ tokenAddress: z.union([ethereumAddressSchema, z.null()]),
118
+ balance: z.union([balanceStringSchema, z.null()]),
119
+ error: z.string().optional(),
120
+ });
121
+ /**
122
+ * Wallet schema
123
+ */
124
+ export const walletSchema = z.object({
125
+ accountIndex: accountIndexSchema,
126
+ identifier: z.string().min(1),
127
+ name: z.string().min(1),
128
+ createdAt: z.number().int().nonnegative(),
129
+ updatedAt: z.number().int().nonnegative(),
130
+ });
131
+ /**
132
+ * Worklet response schemas for runtime validation
133
+ */
134
+ export const workletResponseSchema = z.object({
135
+ result: z.string(),
136
+ error: z.string().optional(),
137
+ });
138
+ /**
139
+ * Balance response schema (numeric string)
140
+ */
141
+ export const balanceResponseSchema = z.string().regex(/^\d+$/, {
142
+ message: 'Balance must be a numeric string',
143
+ });
144
+ /**
145
+ * Account method response schema (union of possible return types)
146
+ */
147
+ export const accountMethodResponseSchema = z.union([
148
+ balanceResponseSchema,
149
+ z.string(), // For addresses
150
+ z.object({}).passthrough(), // For other responses (objects)
151
+ ]);
152
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Store helper utilities
3
+ *
4
+ * Provides common patterns for accessing and validating store state
5
+ * to reduce code duplication across services.
6
+ */
7
+ import type { HRPC } from '@spacesops/pear-wrk-wdk';
8
+ import { asExtendedHRPC } from '../types/hrpc';
9
+ import type { WalletState } from '../store/walletStore';
10
+ /**
11
+ * Require that worklet is initialized and return HRPC instance
12
+ *
13
+ * @throws Error if worklet is not initialized
14
+ * @returns HRPC instance
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const hrpc = requireInitialized()
19
+ * await hrpc.callMethod(...)
20
+ * ```
21
+ */
22
+ export declare function requireInitialized(): HRPC;
23
+ /**
24
+ * Require that worklet is initialized and return extended HRPC instance
25
+ *
26
+ * @throws Error if worklet is not initialized
27
+ * @returns Extended HRPC instance
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const hrpc = requireExtendedHRPC()
32
+ * await hrpc.initializeWDK(...)
33
+ * ```
34
+ */
35
+ export declare function requireExtendedHRPC(): ReturnType<typeof asExtendedHRPC>;
36
+ /**
37
+ * Check if worklet is initialized
38
+ *
39
+ * @returns true if worklet is initialized, false otherwise
40
+ */
41
+ export declare function isInitialized(): boolean;
42
+ /**
43
+ * Update balance in wallet state (helper for nested state updates)
44
+ *
45
+ * @param prev - Previous wallet state
46
+ * @param walletId - Wallet identifier
47
+ * @param network - Network name
48
+ * @param accountIndex - Account index
49
+ * @param tokenKey - Token key (address or 'native')
50
+ * @param balance - Balance value
51
+ * @returns Partial state update
52
+ */
53
+ export declare function updateBalanceInState(prev: WalletState, walletId: string, network: string, accountIndex: number, tokenKey: string, balance: string): Partial<WalletState>;
54
+ /**
55
+ * Update address in wallet state (helper for nested state updates)
56
+ *
57
+ * @param prev - Previous wallet state
58
+ * @param walletId - Wallet identifier
59
+ * @param network - Network name
60
+ * @param accountIndex - Account index
61
+ * @param address - Address value
62
+ * @returns Partial state update
63
+ */
64
+ export declare function updateAddressInState(prev: WalletState, walletId: string, network: string, accountIndex: number, address: string): Partial<WalletState>;
65
+ /**
66
+ * Resolve wallet identifier from parameter or store
67
+ *
68
+ * This helper function standardizes the pattern for resolving walletId across the codebase.
69
+ * It checks the provided walletId parameter first, then falls back to activeWalletId from store,
70
+ * and finally to '__temporary__' if no wallet is active.
71
+ *
72
+ * @param walletId - Optional wallet identifier parameter
73
+ * @returns Resolved wallet identifier (never null)
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const targetWalletId = resolveWalletId(walletId)
78
+ * // Use targetWalletId for operations
79
+ * ```
80
+ */
81
+ export declare function resolveWalletId(walletId?: string): string;
82
+ /**
83
+ * Safely get nested property from an object
84
+ *
85
+ * @param obj - Object to access
86
+ * @param path - Array of keys representing the path
87
+ * @param defaultValue - Default value if path doesn't exist
88
+ * @returns Value at path or default value
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const balance = getNestedState(state.balances, [walletId, network, accountIndex, tokenKey], null)
93
+ * ```
94
+ */
95
+ export declare function getNestedState<T>(obj: Record<string, unknown>, path: (string | number)[], defaultValue: T): T;
96
+ /**
97
+ * Update nested state structure (generic helper for deep state updates)
98
+ *
99
+ * Creates a new nested object structure with the updated value at the specified path.
100
+ * All intermediate objects are shallow copied to maintain immutability.
101
+ *
102
+ * @param prev - Previous state object
103
+ * @param path - Array of keys representing the path to update
104
+ * @param value - Value to set at the path
105
+ * @returns New state object with updated value
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const newState = updateNestedState(prev, ['balances', walletId, network, accountIndex, tokenKey], balance)
110
+ * ```
111
+ */
112
+ export declare function updateNestedState<T extends Record<string, unknown>>(prev: T, path: (string | number)[], value: unknown): Partial<T>;
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Store helper utilities
3
+ *
4
+ * Provides common patterns for accessing and validating store state
5
+ * to reduce code duplication across services.
6
+ */
7
+ import { getWorkletStore } from '../store/workletStore';
8
+ import { getWalletStore } from '../store/walletStore';
9
+ import { asExtendedHRPC } from '../types/hrpc';
10
+ /**
11
+ * Require that worklet is initialized and return HRPC instance
12
+ *
13
+ * @throws Error if worklet is not initialized
14
+ * @returns HRPC instance
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const hrpc = requireInitialized()
19
+ * await hrpc.callMethod(...)
20
+ * ```
21
+ */
22
+ export function requireInitialized() {
23
+ const state = getWorkletStore().getState();
24
+ if (!state.isInitialized || !state.hrpc) {
25
+ throw new Error('WDK not initialized');
26
+ }
27
+ return state.hrpc;
28
+ }
29
+ /**
30
+ * Require that worklet is initialized and return extended HRPC instance
31
+ *
32
+ * @throws Error if worklet is not initialized
33
+ * @returns Extended HRPC instance
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const hrpc = requireExtendedHRPC()
38
+ * await hrpc.initializeWDK(...)
39
+ * ```
40
+ */
41
+ export function requireExtendedHRPC() {
42
+ const hrpc = requireInitialized();
43
+ return asExtendedHRPC(hrpc);
44
+ }
45
+ /**
46
+ * Check if worklet is initialized
47
+ *
48
+ * @returns true if worklet is initialized, false otherwise
49
+ */
50
+ export function isInitialized() {
51
+ const state = getWorkletStore().getState();
52
+ return state.isInitialized && state.hrpc !== null;
53
+ }
54
+ /**
55
+ * Update balance in wallet state (helper for nested state updates)
56
+ *
57
+ * @param prev - Previous wallet state
58
+ * @param walletId - Wallet identifier
59
+ * @param network - Network name
60
+ * @param accountIndex - Account index
61
+ * @param tokenKey - Token key (address or 'native')
62
+ * @param balance - Balance value
63
+ * @returns Partial state update
64
+ */
65
+ export function updateBalanceInState(prev, walletId, network, accountIndex, tokenKey, balance) {
66
+ const walletBalances = prev.balances[walletId] || {};
67
+ const networkBalances = walletBalances[network] || {};
68
+ const accountBalances = networkBalances[accountIndex] || {};
69
+ return {
70
+ balances: {
71
+ ...prev.balances,
72
+ [walletId]: {
73
+ ...walletBalances,
74
+ [network]: {
75
+ ...networkBalances,
76
+ [accountIndex]: {
77
+ ...accountBalances,
78
+ [tokenKey]: balance,
79
+ },
80
+ },
81
+ },
82
+ },
83
+ };
84
+ }
85
+ /**
86
+ * Update address in wallet state (helper for nested state updates)
87
+ *
88
+ * @param prev - Previous wallet state
89
+ * @param walletId - Wallet identifier
90
+ * @param network - Network name
91
+ * @param accountIndex - Account index
92
+ * @param address - Address value
93
+ * @returns Partial state update
94
+ */
95
+ export function updateAddressInState(prev, walletId, network, accountIndex, address) {
96
+ const walletAddresses = prev.addresses[walletId] || {};
97
+ const networkAddresses = walletAddresses[network] || {};
98
+ return {
99
+ addresses: {
100
+ ...prev.addresses,
101
+ [walletId]: {
102
+ ...walletAddresses,
103
+ [network]: {
104
+ ...networkAddresses,
105
+ [accountIndex]: address,
106
+ },
107
+ },
108
+ },
109
+ };
110
+ }
111
+ /**
112
+ * Resolve wallet identifier from parameter or store
113
+ *
114
+ * This helper function standardizes the pattern for resolving walletId across the codebase.
115
+ * It checks the provided walletId parameter first, then falls back to activeWalletId from store,
116
+ * and finally to '__temporary__' if no wallet is active.
117
+ *
118
+ * @param walletId - Optional wallet identifier parameter
119
+ * @returns Resolved wallet identifier (never null)
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * const targetWalletId = resolveWalletId(walletId)
124
+ * // Use targetWalletId for operations
125
+ * ```
126
+ */
127
+ export function resolveWalletId(walletId) {
128
+ if (walletId) {
129
+ return walletId;
130
+ }
131
+ const walletStore = getWalletStore();
132
+ const activeWalletId = walletStore.getState().activeWalletId;
133
+ return activeWalletId || '__temporary__';
134
+ }
135
+ /**
136
+ * Safely get nested property from an object
137
+ *
138
+ * @param obj - Object to access
139
+ * @param path - Array of keys representing the path
140
+ * @param defaultValue - Default value if path doesn't exist
141
+ * @returns Value at path or default value
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * const balance = getNestedState(state.balances, [walletId, network, accountIndex, tokenKey], null)
146
+ * ```
147
+ */
148
+ export function getNestedState(obj, path, defaultValue) {
149
+ let current = obj;
150
+ for (const key of path) {
151
+ if (current == null || typeof current !== 'object') {
152
+ return defaultValue;
153
+ }
154
+ if (!(key in current)) {
155
+ return defaultValue;
156
+ }
157
+ current = current[key];
158
+ }
159
+ return current ?? defaultValue;
160
+ }
161
+ /**
162
+ * Update nested state structure (generic helper for deep state updates)
163
+ *
164
+ * Creates a new nested object structure with the updated value at the specified path.
165
+ * All intermediate objects are shallow copied to maintain immutability.
166
+ *
167
+ * @param prev - Previous state object
168
+ * @param path - Array of keys representing the path to update
169
+ * @param value - Value to set at the path
170
+ * @returns New state object with updated value
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * const newState = updateNestedState(prev, ['balances', walletId, network, accountIndex, tokenKey], balance)
175
+ * ```
176
+ */
177
+ export function updateNestedState(prev, path, value) {
178
+ if (path.length === 0) {
179
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
180
+ return { ...prev, ...value };
181
+ }
182
+ return prev;
183
+ }
184
+ const [firstKey, ...restPath] = path;
185
+ const keyString = String(firstKey);
186
+ const currentValue = prev[keyString];
187
+ const currentValueObj = (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue))
188
+ ? currentValue
189
+ : {};
190
+ const updatedValue = restPath.length > 0
191
+ ? updateNestedState(currentValueObj, restPath, value)
192
+ : value;
193
+ return {
194
+ ...prev,
195
+ [keyString]: updatedValue,
196
+ };
197
+ }
198
+ //# sourceMappingURL=storeHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storeHelpers.js","sourceRoot":"","sources":["../../src/utils/storeHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Runtime Type Guards
3
+ *
4
+ * Provides runtime type checking for critical data paths to ensure type safety
5
+ * beyond TypeScript's compile-time checks.
6
+ *
7
+ * NOTE: These type guards now use Zod schemas internally for validation.
8
+ * They are kept for backward compatibility but may be deprecated in the future.
9
+ */
10
+ import type { NetworkConfig, NetworkConfigs, TokenConfig, TokenConfigs, WalletAddresses, WalletBalances } from '../types';
11
+ /**
12
+ * Type guard to check if a value is a valid NetworkConfig
13
+ * Uses Zod schema internally for validation
14
+ */
15
+ export declare function isNetworkConfig(value: unknown): value is NetworkConfig;
16
+ /**
17
+ * Type guard to check if a value is a valid NetworkConfigs
18
+ * Uses Zod schema internally for validation
19
+ */
20
+ export declare function isNetworkConfigs(value: unknown): value is NetworkConfigs;
21
+ /**
22
+ * Type guard to check if a value is a valid TokenConfig
23
+ * Uses Zod schema internally for validation
24
+ */
25
+ export declare function isTokenConfig(value: unknown): value is TokenConfig;
26
+ /**
27
+ * Type guard to check if a value is a valid TokenConfigs
28
+ * Uses Zod schema internally for validation
29
+ */
30
+ export declare function isTokenConfigs(value: unknown): value is TokenConfigs;
31
+ /**
32
+ * Type guard to check if a value is a valid WalletAddresses structure
33
+ * Uses Zod schema internally for validation
34
+ */
35
+ export declare function isWalletAddresses(value: unknown): value is WalletAddresses;
36
+ /**
37
+ * Type guard to check if a value is a valid WalletBalances structure
38
+ * Uses Zod schema internally for validation
39
+ */
40
+ export declare function isWalletBalances(value: unknown): value is WalletBalances;
41
+ /**
42
+ * Type guard to check if a value is a valid Ethereum address
43
+ * Uses Zod schema internally for validation
44
+ */
45
+ export declare function isEthereumAddress(value: unknown): value is string;
46
+ /**
47
+ * Type guard to check if a value is a valid Spark address (Bech32 format)
48
+ * Spark addresses start with "spark1" followed by Bech32-encoded characters
49
+ * Uses Zod schema internally for validation
50
+ */
51
+ export declare function isSparkAddress(value: unknown): value is string;
52
+ /**
53
+ * Type guard to check if a value is a valid address (Ethereum or Spark format)
54
+ */
55
+ export declare function isValidAddress(value: unknown): value is string;
56
+ /**
57
+ * Type guard to check if a value is a valid account index
58
+ * Uses Zod schema internally for validation
59
+ */
60
+ export declare function isValidAccountIndex(value: unknown): value is number;
61
+ /**
62
+ * Type guard to check if a value is a valid network name
63
+ * Uses Zod schema internally for validation
64
+ */
65
+ export declare function isValidNetworkName(value: unknown): value is string;
66
+ /**
67
+ * Type guard to check if a value is a valid balance string
68
+ * Uses Zod schema internally for validation
69
+ */
70
+ export declare function isValidBalanceString(value: unknown): value is string;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Runtime Type Guards
3
+ *
4
+ * Provides runtime type checking for critical data paths to ensure type safety
5
+ * beyond TypeScript's compile-time checks.
6
+ *
7
+ * NOTE: These type guards now use Zod schemas internally for validation.
8
+ * They are kept for backward compatibility but may be deprecated in the future.
9
+ */
10
+ import { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, ethereumAddressSchema, sparkAddressSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, } from './schemas';
11
+ /**
12
+ * Type guard to check if a value is a valid NetworkConfig
13
+ * Uses Zod schema internally for validation
14
+ */
15
+ export function isNetworkConfig(value) {
16
+ return networkConfigSchema.safeParse(value).success;
17
+ }
18
+ /**
19
+ * Type guard to check if a value is a valid NetworkConfigs
20
+ * Uses Zod schema internally for validation
21
+ */
22
+ export function isNetworkConfigs(value) {
23
+ return networkConfigsSchema.safeParse(value).success;
24
+ }
25
+ /**
26
+ * Type guard to check if a value is a valid TokenConfig
27
+ * Uses Zod schema internally for validation
28
+ */
29
+ export function isTokenConfig(value) {
30
+ return tokenConfigSchema.safeParse(value).success;
31
+ }
32
+ /**
33
+ * Type guard to check if a value is a valid TokenConfigs
34
+ * Uses Zod schema internally for validation
35
+ */
36
+ export function isTokenConfigs(value) {
37
+ return tokenConfigsSchema.safeParse(value).success;
38
+ }
39
+ /**
40
+ * Type guard to check if a value is a valid WalletAddresses structure
41
+ * Uses Zod schema internally for validation
42
+ */
43
+ export function isWalletAddresses(value) {
44
+ return walletAddressesSchema.safeParse(value).success;
45
+ }
46
+ /**
47
+ * Type guard to check if a value is a valid WalletBalances structure
48
+ * Uses Zod schema internally for validation
49
+ */
50
+ export function isWalletBalances(value) {
51
+ return walletBalancesSchema.safeParse(value).success;
52
+ }
53
+ /**
54
+ * Type guard to check if a value is a valid Ethereum address
55
+ * Uses Zod schema internally for validation
56
+ */
57
+ export function isEthereumAddress(value) {
58
+ return ethereumAddressSchema.safeParse(value).success;
59
+ }
60
+ /**
61
+ * Type guard to check if a value is a valid Spark address (Bech32 format)
62
+ * Spark addresses start with "spark1" followed by Bech32-encoded characters
63
+ * Uses Zod schema internally for validation
64
+ */
65
+ export function isSparkAddress(value) {
66
+ return sparkAddressSchema.safeParse(value).success;
67
+ }
68
+ /**
69
+ * Type guard to check if a value is a valid address (Ethereum or Spark format)
70
+ */
71
+ export function isValidAddress(value) {
72
+ return isEthereumAddress(value) || isSparkAddress(value);
73
+ }
74
+ /**
75
+ * Type guard to check if a value is a valid account index
76
+ * Uses Zod schema internally for validation
77
+ */
78
+ export function isValidAccountIndex(value) {
79
+ return accountIndexSchema.safeParse(value).success;
80
+ }
81
+ /**
82
+ * Type guard to check if a value is a valid network name
83
+ * Uses Zod schema internally for validation
84
+ */
85
+ export function isValidNetworkName(value) {
86
+ return networkNameSchema.safeParse(value).success;
87
+ }
88
+ /**
89
+ * Type guard to check if a value is a valid balance string
90
+ * Uses Zod schema internally for validation
91
+ */
92
+ export function isValidBalanceString(value) {
93
+ return balanceStringSchema.safeParse(value).success;
94
+ }
95
+ //# sourceMappingURL=typeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/utils/typeGuards.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAA;AAUlB;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AACrD,CAAC"}