@opendatalabs/vana-sdk 0.1.0-alpha.ffe4659 → 2.0.0

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 (907) hide show
  1. package/README.md +13 -4
  2. package/dist/__tests__/waitForTransactionEvents.test.d.ts +1 -0
  3. package/dist/browser.cjs +29 -0
  4. package/dist/browser.cjs.map +1 -0
  5. package/dist/browser.d.ts +36 -1
  6. package/dist/browser.js +1 -305
  7. package/dist/browser.js.map +1 -1
  8. package/dist/{chains.browser.cjs → chains/definitions.cjs} +16 -17
  9. package/dist/chains/definitions.cjs.map +1 -0
  10. package/dist/{chains.browser.d.cts → chains/definitions.d.ts} +9 -11
  11. package/dist/chains/definitions.js +67 -0
  12. package/dist/chains/definitions.js.map +1 -0
  13. package/dist/chains/index.cjs +37 -0
  14. package/dist/chains/index.cjs.map +1 -0
  15. package/dist/chains/index.d.ts +34 -0
  16. package/dist/chains/index.js +15 -0
  17. package/dist/chains/index.js.map +1 -0
  18. package/dist/chains.browser.d.ts +5 -50
  19. package/dist/chains.browser.js +7 -57
  20. package/dist/chains.browser.js.map +1 -1
  21. package/dist/chains.cjs +6 -65
  22. package/dist/chains.cjs.map +1 -1
  23. package/dist/chains.d.ts +8 -2
  24. package/dist/chains.js +7 -57
  25. package/dist/chains.js.map +1 -1
  26. package/dist/chains.node.cjs +6 -65
  27. package/dist/chains.node.cjs.map +1 -1
  28. package/dist/chains.node.d.ts +8 -2
  29. package/dist/chains.node.js +7 -57
  30. package/dist/chains.node.js.map +1 -1
  31. package/dist/client/__tests__/enhancedResponse.test.d.ts +1 -0
  32. package/dist/client/enhancedResponse.cjs +164 -0
  33. package/dist/client/enhancedResponse.cjs.map +1 -0
  34. package/dist/client/enhancedResponse.d.ts +120 -0
  35. package/dist/client/enhancedResponse.js +138 -0
  36. package/dist/client/enhancedResponse.js.map +1 -0
  37. package/dist/config/addresses.cjs +325 -0
  38. package/dist/config/addresses.cjs.map +1 -0
  39. package/dist/config/addresses.d.ts +364 -0
  40. package/dist/config/addresses.js +295 -0
  41. package/dist/config/addresses.js.map +1 -0
  42. package/dist/config/chains.cjs +93 -0
  43. package/dist/config/chains.cjs.map +1 -0
  44. package/dist/config/chains.d.ts +180 -0
  45. package/dist/config/chains.js +67 -0
  46. package/dist/config/chains.js.map +1 -0
  47. package/dist/config/default-services.cjs +60 -0
  48. package/dist/config/default-services.cjs.map +1 -0
  49. package/dist/config/default-services.d.ts +46 -0
  50. package/dist/config/default-services.js +33 -0
  51. package/dist/config/default-services.js.map +1 -0
  52. package/dist/config/default-services.test.d.ts +1 -0
  53. package/dist/config/features.cjs +52 -0
  54. package/dist/config/features.cjs.map +1 -0
  55. package/dist/config/features.d.ts +62 -0
  56. package/dist/config/features.js +28 -0
  57. package/dist/config/features.js.map +1 -0
  58. package/dist/config/tests/addresses.test.d.ts +1 -0
  59. package/dist/contracts/contractController.cjs +126 -0
  60. package/dist/contracts/contractController.cjs.map +1 -0
  61. package/dist/contracts/contractController.d.ts +135 -0
  62. package/dist/contracts/contractController.js +100 -0
  63. package/dist/contracts/contractController.js.map +1 -0
  64. package/dist/contracts/tests/contractController.test.d.ts +1 -0
  65. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +7 -0
  66. package/dist/controllers/__tests__/operations.processQueue.test.d.ts +1 -0
  67. package/dist/controllers/__tests__/schemas-edge-cases.test.d.ts +1 -0
  68. package/dist/controllers/base.cjs +116 -0
  69. package/dist/controllers/base.cjs.map +1 -0
  70. package/dist/controllers/base.d.ts +94 -0
  71. package/dist/controllers/base.js +92 -0
  72. package/dist/controllers/base.js.map +1 -0
  73. package/dist/controllers/data-error-handling.test.d.ts +1 -0
  74. package/dist/controllers/data.cjs +2633 -0
  75. package/dist/controllers/data.cjs.map +1 -0
  76. package/dist/controllers/data.d.ts +1067 -0
  77. package/dist/controllers/data.js +2626 -0
  78. package/dist/controllers/data.js.map +1 -0
  79. package/dist/controllers/operations.cjs +430 -0
  80. package/dist/controllers/operations.cjs.map +1 -0
  81. package/dist/controllers/operations.d.ts +229 -0
  82. package/dist/controllers/operations.js +406 -0
  83. package/dist/controllers/operations.js.map +1 -0
  84. package/dist/controllers/permissions.cjs +4363 -0
  85. package/dist/controllers/permissions.cjs.map +1 -0
  86. package/dist/controllers/permissions.d.ts +1411 -0
  87. package/dist/controllers/permissions.js +4339 -0
  88. package/dist/controllers/permissions.js.map +1 -0
  89. package/dist/controllers/protocol.cjs +183 -0
  90. package/dist/controllers/protocol.cjs.map +1 -0
  91. package/dist/controllers/protocol.d.ts +138 -0
  92. package/dist/controllers/protocol.js +163 -0
  93. package/dist/controllers/protocol.js.map +1 -0
  94. package/dist/controllers/schemas.cjs +678 -0
  95. package/dist/controllers/schemas.cjs.map +1 -0
  96. package/dist/controllers/schemas.d.ts +293 -0
  97. package/dist/controllers/schemas.js +654 -0
  98. package/dist/controllers/schemas.js.map +1 -0
  99. package/dist/controllers/server-additional.test.d.ts +1 -0
  100. package/dist/controllers/server.cjs +643 -0
  101. package/dist/controllers/server.cjs.map +1 -0
  102. package/dist/controllers/server.d.ts +322 -0
  103. package/dist/controllers/server.js +624 -0
  104. package/dist/controllers/server.js.map +1 -0
  105. package/dist/core/__tests__/health.test.d.ts +1 -0
  106. package/dist/core/__tests__/inMemoryNonceManager.test.d.ts +1 -0
  107. package/dist/core/__tests__/nonceManager.test.d.ts +1 -0
  108. package/dist/core/__tests__/pollingManager.test.d.ts +4 -0
  109. package/dist/core/apiClient.cjs +378 -0
  110. package/dist/core/apiClient.cjs.map +1 -0
  111. package/dist/core/apiClient.d.ts +286 -0
  112. package/dist/core/apiClient.js +359 -0
  113. package/dist/core/apiClient.js.map +1 -0
  114. package/dist/core/client.cjs +70 -0
  115. package/dist/core/client.cjs.map +1 -0
  116. package/dist/core/client.d.ts +89 -0
  117. package/dist/core/client.js +47 -0
  118. package/dist/core/client.js.map +1 -0
  119. package/dist/core/core.test.d.ts +1 -0
  120. package/dist/core/generics.cjs +417 -0
  121. package/dist/core/generics.cjs.map +1 -0
  122. package/dist/core/generics.d.ts +205 -0
  123. package/dist/core/generics.js +386 -0
  124. package/dist/core/generics.js.map +1 -0
  125. package/dist/core/health.cjs +289 -0
  126. package/dist/core/health.cjs.map +1 -0
  127. package/dist/core/health.d.ts +143 -0
  128. package/dist/core/health.js +265 -0
  129. package/dist/core/health.js.map +1 -0
  130. package/dist/core/inMemoryNonceManager.cjs +138 -0
  131. package/dist/core/inMemoryNonceManager.cjs.map +1 -0
  132. package/dist/core/inMemoryNonceManager.d.ts +69 -0
  133. package/dist/core/inMemoryNonceManager.js +114 -0
  134. package/dist/core/inMemoryNonceManager.js.map +1 -0
  135. package/dist/core/nonceManager.cjs +304 -0
  136. package/dist/core/nonceManager.cjs.map +1 -0
  137. package/dist/core/nonceManager.d.ts +116 -0
  138. package/dist/core/nonceManager.js +280 -0
  139. package/dist/core/nonceManager.js.map +1 -0
  140. package/dist/core/pollingManager.cjs +292 -0
  141. package/dist/core/pollingManager.cjs.map +1 -0
  142. package/dist/core/pollingManager.d.ts +120 -0
  143. package/dist/core/pollingManager.js +268 -0
  144. package/dist/core/pollingManager.js.map +1 -0
  145. package/dist/core/tests/apiClient.test.d.ts +1 -0
  146. package/dist/core/tests/client.test.d.ts +1 -0
  147. package/dist/core/tests/generics.test.d.ts +1 -0
  148. package/dist/core.cjs +777 -0
  149. package/dist/core.cjs.map +1 -0
  150. package/dist/core.d.ts +493 -0
  151. package/dist/core.js +752 -0
  152. package/dist/core.js.map +1 -0
  153. package/dist/crypto/ecies/__tests__/base.test.d.ts +4 -0
  154. package/dist/crypto/ecies/__tests__/compatibility.test.d.ts +8 -0
  155. package/dist/crypto/ecies/__tests__/constants.test.d.ts +4 -0
  156. package/dist/crypto/ecies/__tests__/native-parity.test.d.ts +7 -0
  157. package/dist/crypto/ecies/__tests__/normalization.test.d.ts +1 -0
  158. package/dist/crypto/ecies/__tests__/test-vectors.cjs +102 -0
  159. package/dist/crypto/ecies/__tests__/test-vectors.cjs.map +1 -0
  160. package/dist/crypto/ecies/__tests__/test-vectors.d.ts +38 -0
  161. package/dist/crypto/ecies/__tests__/test-vectors.js +77 -0
  162. package/dist/crypto/ecies/__tests__/test-vectors.js.map +1 -0
  163. package/dist/crypto/ecies/base.cjs +245 -0
  164. package/dist/crypto/ecies/base.cjs.map +1 -0
  165. package/dist/crypto/ecies/base.d.ts +140 -0
  166. package/dist/crypto/ecies/base.js +221 -0
  167. package/dist/crypto/ecies/base.js.map +1 -0
  168. package/dist/crypto/ecies/browser.cjs +165 -0
  169. package/dist/crypto/ecies/browser.cjs.map +1 -0
  170. package/dist/crypto/ecies/browser.d.ts +43 -0
  171. package/dist/crypto/ecies/browser.js +131 -0
  172. package/dist/crypto/ecies/browser.js.map +1 -0
  173. package/dist/crypto/ecies/constants.cjs +131 -0
  174. package/dist/crypto/ecies/constants.cjs.map +1 -0
  175. package/dist/crypto/ecies/constants.d.ts +120 -0
  176. package/dist/crypto/ecies/constants.js +101 -0
  177. package/dist/crypto/ecies/constants.js.map +1 -0
  178. package/dist/crypto/ecies/index.cjs +35 -0
  179. package/dist/crypto/ecies/index.cjs.map +1 -0
  180. package/dist/crypto/ecies/index.d.ts +8 -0
  181. package/dist/crypto/ecies/index.js +13 -0
  182. package/dist/crypto/ecies/index.js.map +1 -0
  183. package/dist/crypto/ecies/interface.cjs +87 -0
  184. package/dist/crypto/ecies/interface.cjs.map +1 -0
  185. package/dist/crypto/ecies/interface.d.ts +174 -0
  186. package/dist/crypto/ecies/interface.js +60 -0
  187. package/dist/crypto/ecies/interface.js.map +1 -0
  188. package/dist/crypto/ecies/node.cjs +167 -0
  189. package/dist/crypto/ecies/node.cjs.map +1 -0
  190. package/dist/crypto/ecies/node.d.ts +45 -0
  191. package/dist/crypto/ecies/node.js +139 -0
  192. package/dist/crypto/ecies/node.js.map +1 -0
  193. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.json +72 -0
  194. package/dist/crypto/ecies/utils.cjs +52 -0
  195. package/dist/crypto/ecies/utils.cjs.map +1 -0
  196. package/dist/crypto/ecies/utils.d.ts +30 -0
  197. package/dist/crypto/ecies/utils.js +26 -0
  198. package/dist/crypto/ecies/utils.js.map +1 -0
  199. package/dist/crypto/services/WalletKeyEncryptionService.cjs +128 -0
  200. package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -0
  201. package/dist/crypto/services/WalletKeyEncryptionService.d.ts +88 -0
  202. package/dist/crypto/services/WalletKeyEncryptionService.js +108 -0
  203. package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -0
  204. package/dist/crypto/services/WalletKeyEncryptionService.test.d.ts +1 -0
  205. package/dist/diagnostics.cjs +37 -0
  206. package/dist/diagnostics.cjs.map +1 -0
  207. package/dist/diagnostics.d.ts +24 -0
  208. package/dist/diagnostics.js +13 -0
  209. package/dist/diagnostics.js.map +1 -0
  210. package/dist/diagnostics.test.d.ts +1 -0
  211. package/dist/errors.cjs +186 -0
  212. package/dist/errors.cjs.map +1 -0
  213. package/dist/errors.d.ts +452 -0
  214. package/dist/errors.js +148 -0
  215. package/dist/errors.js.map +1 -0
  216. package/dist/generated/abi/ComputeEngineImplementation.cjs +1313 -0
  217. package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -0
  218. package/dist/generated/abi/ComputeEngineImplementation.d.ts +995 -0
  219. package/dist/generated/abi/ComputeEngineImplementation.js +1289 -0
  220. package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -0
  221. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs +734 -0
  222. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -0
  223. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +544 -0
  224. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js +710 -0
  225. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -0
  226. package/dist/generated/abi/DATFactoryImplementation.cjs +882 -0
  227. package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -0
  228. package/dist/generated/abi/DATFactoryImplementation.d.ts +660 -0
  229. package/dist/generated/abi/DATFactoryImplementation.js +858 -0
  230. package/dist/generated/abi/DATFactoryImplementation.js.map +1 -0
  231. package/dist/generated/abi/DATImplementation.cjs +934 -0
  232. package/dist/generated/abi/DATImplementation.cjs.map +1 -0
  233. package/dist/generated/abi/DATImplementation.d.ts +692 -0
  234. package/dist/generated/abi/DATImplementation.js +910 -0
  235. package/dist/generated/abi/DATImplementation.js.map +1 -0
  236. package/dist/generated/abi/DATPausableImplementation.cjs +1523 -0
  237. package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -0
  238. package/dist/generated/abi/DATPausableImplementation.d.ts +1144 -0
  239. package/dist/generated/abi/DATPausableImplementation.js +1499 -0
  240. package/dist/generated/abi/DATPausableImplementation.js.map +1 -0
  241. package/dist/generated/abi/DATVotesImplementation.cjs +1460 -0
  242. package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -0
  243. package/dist/generated/abi/DATVotesImplementation.d.ts +1094 -0
  244. package/dist/generated/abi/DATVotesImplementation.js +1436 -0
  245. package/dist/generated/abi/DATVotesImplementation.js.map +1 -0
  246. package/dist/generated/abi/DLPPerformanceImplementation.cjs +1202 -0
  247. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -0
  248. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +914 -0
  249. package/dist/generated/abi/DLPPerformanceImplementation.js +1178 -0
  250. package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -0
  251. package/dist/generated/abi/DLPRegistryImplementation.cjs +1469 -0
  252. package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -0
  253. package/dist/generated/abi/DLPRegistryImplementation.d.ts +1122 -0
  254. package/dist/generated/abi/DLPRegistryImplementation.js +1445 -0
  255. package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -0
  256. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs +612 -0
  257. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -0
  258. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +451 -0
  259. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js +588 -0
  260. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -0
  261. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +1112 -0
  262. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -0
  263. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +840 -0
  264. package/dist/generated/abi/DLPRewardDeployerImplementation.js +1088 -0
  265. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -0
  266. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +612 -0
  267. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +1 -0
  268. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +451 -0
  269. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +588 -0
  270. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +1 -0
  271. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +939 -0
  272. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -0
  273. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +705 -0
  274. package/dist/generated/abi/DLPRewardSwapImplementation.js +915 -0
  275. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -0
  276. package/dist/generated/abi/DLPRootImplementation.cjs +1644 -0
  277. package/dist/generated/abi/DLPRootImplementation.cjs.map +1 -0
  278. package/dist/generated/abi/DLPRootImplementation.d.ts +1246 -0
  279. package/dist/generated/abi/DLPRootImplementation.js +1620 -0
  280. package/dist/generated/abi/DLPRootImplementation.js.map +1 -0
  281. package/dist/generated/abi/DLPTreasuryImplementation.cjs +612 -0
  282. package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +1 -0
  283. package/dist/generated/abi/DLPTreasuryImplementation.d.ts +451 -0
  284. package/dist/generated/abi/DLPTreasuryImplementation.js +588 -0
  285. package/dist/generated/abi/DLPTreasuryImplementation.js.map +1 -0
  286. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +985 -0
  287. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -0
  288. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +735 -0
  289. package/dist/generated/abi/DataLiquidityPoolImplementation.js +961 -0
  290. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -0
  291. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +1036 -0
  292. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -0
  293. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +773 -0
  294. package/dist/generated/abi/DataPortabilityGranteesImplementation.js +1012 -0
  295. package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -0
  296. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +1298 -0
  297. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -0
  298. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +974 -0
  299. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +1274 -0
  300. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -0
  301. package/dist/generated/abi/DataPortabilityServersImplementation.cjs +1419 -0
  302. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -0
  303. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +1071 -0
  304. package/dist/generated/abi/DataPortabilityServersImplementation.js +1395 -0
  305. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -0
  306. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs +984 -0
  307. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -0
  308. package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +736 -0
  309. package/dist/generated/abi/DataRefinerRegistryImplementation.js +960 -0
  310. package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -0
  311. package/dist/generated/abi/DataRegistryImplementation.cjs +1328 -0
  312. package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -0
  313. package/dist/generated/abi/DataRegistryImplementation.d.ts +1003 -0
  314. package/dist/generated/abi/DataRegistryImplementation.js +1304 -0
  315. package/dist/generated/abi/DataRegistryImplementation.js.map +1 -0
  316. package/dist/generated/abi/QueryEngineImplementation.cjs +1319 -0
  317. package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -0
  318. package/dist/generated/abi/QueryEngineImplementation.d.ts +1000 -0
  319. package/dist/generated/abi/QueryEngineImplementation.js +1295 -0
  320. package/dist/generated/abi/QueryEngineImplementation.js.map +1 -0
  321. package/dist/generated/abi/SwapHelperImplementation.cjs +976 -0
  322. package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -0
  323. package/dist/generated/abi/SwapHelperImplementation.d.ts +728 -0
  324. package/dist/generated/abi/SwapHelperImplementation.js +952 -0
  325. package/dist/generated/abi/SwapHelperImplementation.js.map +1 -0
  326. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs +936 -0
  327. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -0
  328. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +700 -0
  329. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js +912 -0
  330. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -0
  331. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs +936 -0
  332. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -0
  333. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +700 -0
  334. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js +912 -0
  335. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -0
  336. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs +936 -0
  337. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -0
  338. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +700 -0
  339. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js +912 -0
  340. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -0
  341. package/dist/generated/abi/TeePoolImplementation.cjs +1313 -0
  342. package/dist/generated/abi/TeePoolImplementation.cjs.map +1 -0
  343. package/dist/generated/abi/TeePoolImplementation.d.ts +992 -0
  344. package/dist/generated/abi/TeePoolImplementation.js +1289 -0
  345. package/dist/generated/abi/TeePoolImplementation.js.map +1 -0
  346. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs +936 -0
  347. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -0
  348. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +700 -0
  349. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js +912 -0
  350. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -0
  351. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs +936 -0
  352. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -0
  353. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +700 -0
  354. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js +912 -0
  355. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -0
  356. package/dist/generated/abi/TeePoolPhalaImplementation.cjs +1313 -0
  357. package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -0
  358. package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +992 -0
  359. package/dist/generated/abi/TeePoolPhalaImplementation.js +1289 -0
  360. package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -0
  361. package/dist/generated/abi/VanaEpochImplementation.cjs +1383 -0
  362. package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -0
  363. package/dist/generated/abi/VanaEpochImplementation.d.ts +1050 -0
  364. package/dist/generated/abi/VanaEpochImplementation.js +1359 -0
  365. package/dist/generated/abi/VanaEpochImplementation.js.map +1 -0
  366. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +1191 -0
  367. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -0
  368. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +899 -0
  369. package/dist/generated/abi/VanaPoolEntityImplementation.js +1167 -0
  370. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -0
  371. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +1033 -0
  372. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -0
  373. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +776 -0
  374. package/dist/generated/abi/VanaPoolStakingImplementation.js +1009 -0
  375. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -0
  376. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs +538 -0
  377. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -0
  378. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +393 -0
  379. package/dist/generated/abi/VanaPoolTreasuryImplementation.js +514 -0
  380. package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -0
  381. package/dist/generated/abi/index.cjs +177 -0
  382. package/dist/generated/abi/index.cjs.map +1 -0
  383. package/dist/{index.node.d.cts → generated/abi/index.d.ts} +26941 -37486
  384. package/dist/generated/abi/index.js +120 -0
  385. package/dist/generated/abi/index.js.map +1 -0
  386. package/dist/generated/event-types.cjs +17 -0
  387. package/dist/generated/event-types.cjs.map +1 -0
  388. package/dist/generated/event-types.d.ts +860 -0
  389. package/dist/generated/event-types.js +1 -0
  390. package/dist/generated/event-types.js.map +1 -0
  391. package/dist/generated/eventRegistry.cjs +3375 -0
  392. package/dist/generated/eventRegistry.cjs.map +1 -0
  393. package/dist/generated/eventRegistry.d.ts +14 -0
  394. package/dist/generated/eventRegistry.js +3350 -0
  395. package/dist/generated/eventRegistry.js.map +1 -0
  396. package/dist/generated/server/server-exports.cjs +45 -0
  397. package/dist/generated/server/server-exports.cjs.map +1 -0
  398. package/dist/generated/server/server-exports.d.ts +36 -0
  399. package/dist/generated/server/server-exports.js +19 -0
  400. package/dist/generated/server/server-exports.js.map +1 -0
  401. package/dist/generated/server/server.cjs +17 -0
  402. package/dist/generated/server/server.cjs.map +1 -0
  403. package/dist/generated/server/server.d.ts +907 -0
  404. package/dist/generated/server/server.js +1 -0
  405. package/dist/generated/server/server.js.map +1 -0
  406. package/dist/generated/subgraph.cjs +1440 -0
  407. package/dist/generated/subgraph.cjs.map +1 -0
  408. package/dist/generated/subgraph.d.ts +6113 -0
  409. package/dist/generated/subgraph.js +1404 -0
  410. package/dist/generated/subgraph.js.map +1 -0
  411. package/dist/index.browser.d.ts +48 -37223
  412. package/dist/index.browser.js +86 -46352
  413. package/dist/index.browser.js.map +1 -1
  414. package/dist/index.cjs +5 -0
  415. package/dist/index.cjs.map +1 -0
  416. package/dist/index.d.ts +0 -0
  417. package/dist/index.js +4 -0
  418. package/dist/index.js.map +1 -0
  419. package/dist/index.node.cjs +123 -46839
  420. package/dist/index.node.cjs.map +1 -1
  421. package/dist/index.node.d.ts +92 -37358
  422. package/dist/index.node.js +103 -46726
  423. package/dist/index.node.js.map +1 -1
  424. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +1 -0
  425. package/dist/lib/redisAtomicStore.cjs +201 -0
  426. package/dist/lib/redisAtomicStore.cjs.map +1 -0
  427. package/dist/lib/redisAtomicStore.d.ts +120 -0
  428. package/dist/lib/redisAtomicStore.js +177 -0
  429. package/dist/lib/redisAtomicStore.js.map +1 -0
  430. package/dist/node.cjs +2 -321
  431. package/dist/node.cjs.map +1 -1
  432. package/dist/node.d.ts +42 -1
  433. package/dist/node.js +1 -307
  434. package/dist/node.js.map +1 -1
  435. package/dist/platform/browser-only.cjs +37 -0
  436. package/dist/platform/browser-only.cjs.map +1 -0
  437. package/dist/platform/browser-only.d.ts +22 -0
  438. package/dist/platform/browser-only.js +12 -0
  439. package/dist/platform/browser-only.js.map +1 -0
  440. package/dist/platform/browser-only.test.d.ts +1 -0
  441. package/dist/platform/browser-safe.cjs +57 -0
  442. package/dist/platform/browser-safe.cjs.map +1 -0
  443. package/dist/platform/browser-safe.d.ts +29 -0
  444. package/dist/platform/browser-safe.js +31 -0
  445. package/dist/platform/browser-safe.js.map +1 -0
  446. package/dist/platform/browser-safe.test.d.ts +1 -0
  447. package/dist/platform/browser.cjs +488 -0
  448. package/dist/platform/browser.cjs.map +1 -0
  449. package/dist/platform/browser.d.ts +291 -0
  450. package/dist/platform/browser.js +454 -0
  451. package/dist/platform/browser.js.map +1 -0
  452. package/dist/platform/browser.test.d.ts +1 -0
  453. package/dist/platform/index.cjs +50 -0
  454. package/dist/platform/index.cjs.map +1 -0
  455. package/dist/platform/index.d.ts +11 -0
  456. package/dist/platform/index.js +27 -0
  457. package/dist/platform/index.js.map +1 -0
  458. package/dist/platform/interface.cjs +17 -0
  459. package/dist/platform/interface.cjs.map +1 -0
  460. package/dist/platform/interface.d.ts +409 -0
  461. package/dist/platform/interface.js +1 -0
  462. package/dist/platform/interface.js.map +1 -0
  463. package/dist/platform/node.cjs +512 -0
  464. package/dist/platform/node.cjs.map +1 -0
  465. package/dist/platform/node.d.ts +86 -0
  466. package/dist/platform/node.js +481 -0
  467. package/dist/platform/node.js.map +1 -0
  468. package/dist/platform/ports/openpgp-port.cjs +74 -0
  469. package/dist/platform/ports/openpgp-port.cjs.map +1 -0
  470. package/dist/platform/ports/openpgp-port.d.ts +13 -0
  471. package/dist/platform/ports/openpgp-port.js +59 -0
  472. package/dist/platform/ports/openpgp-port.js.map +1 -0
  473. package/dist/platform/ports/pgp-port.cjs +17 -0
  474. package/dist/platform/ports/pgp-port.cjs.map +1 -0
  475. package/dist/platform/ports/pgp-port.d.ts +35 -0
  476. package/dist/platform/ports/pgp-port.js +1 -0
  477. package/dist/platform/ports/pgp-port.js.map +1 -0
  478. package/dist/platform/shared/error-utils.cjs +43 -0
  479. package/dist/platform/shared/error-utils.cjs.map +1 -0
  480. package/dist/platform/shared/error-utils.d.ts +23 -0
  481. package/dist/platform/shared/error-utils.js +18 -0
  482. package/dist/platform/shared/error-utils.js.map +1 -0
  483. package/dist/platform/shared/pgp-utils.cjs +55 -0
  484. package/dist/platform/shared/pgp-utils.cjs.map +1 -0
  485. package/dist/platform/shared/pgp-utils.d.ts +59 -0
  486. package/dist/platform/shared/pgp-utils.js +29 -0
  487. package/dist/platform/shared/pgp-utils.js.map +1 -0
  488. package/dist/platform/shared/stream-utils.cjs +49 -0
  489. package/dist/platform/shared/stream-utils.cjs.map +1 -0
  490. package/dist/platform/shared/stream-utils.d.ts +14 -0
  491. package/dist/platform/shared/stream-utils.js +25 -0
  492. package/dist/platform/shared/stream-utils.js.map +1 -0
  493. package/dist/platform/utils.cjs +114 -0
  494. package/dist/platform/utils.cjs.map +1 -0
  495. package/dist/platform/utils.d.ts +49 -0
  496. package/dist/platform/utils.js +76 -0
  497. package/dist/platform/utils.js.map +1 -0
  498. package/dist/platform/utils.test.d.ts +1 -0
  499. package/dist/platform.browser.d.ts +6 -57
  500. package/dist/platform.browser.js +10 -379
  501. package/dist/platform.browser.js.map +1 -1
  502. package/dist/platform.cjs +14 -708
  503. package/dist/platform.cjs.map +1 -1
  504. package/dist/platform.d.ts +11 -2
  505. package/dist/platform.js +14 -694
  506. package/dist/platform.js.map +1 -1
  507. package/dist/platform.node.cjs +14 -708
  508. package/dist/platform.node.cjs.map +1 -1
  509. package/dist/platform.node.d.ts +7 -102
  510. package/dist/platform.node.js +14 -694
  511. package/dist/platform.node.js.map +1 -1
  512. package/dist/schemas/dataSchema.schema.json +53 -0
  513. package/dist/schemas/grantFile.schema.json +43 -0
  514. package/dist/server/relayerHandler.cjs +452 -0
  515. package/dist/server/relayerHandler.cjs.map +1 -0
  516. package/dist/server/relayerHandler.d.ts +69 -0
  517. package/dist/server/relayerHandler.js +428 -0
  518. package/dist/server/relayerHandler.js.map +1 -0
  519. package/dist/storage/index.cjs +47 -0
  520. package/dist/storage/index.cjs.map +1 -0
  521. package/dist/storage/index.d.ts +57 -0
  522. package/dist/storage/index.js +17 -0
  523. package/dist/storage/index.js.map +1 -0
  524. package/dist/storage/manager.cjs +272 -0
  525. package/dist/storage/manager.cjs.map +1 -0
  526. package/dist/storage/manager.d.ts +241 -0
  527. package/dist/storage/manager.js +248 -0
  528. package/dist/storage/manager.js.map +1 -0
  529. package/dist/storage/providers/callback-storage.cjs +248 -0
  530. package/dist/storage/providers/callback-storage.cjs.map +1 -0
  531. package/dist/storage/providers/callback-storage.d.ts +183 -0
  532. package/dist/storage/providers/callback-storage.js +226 -0
  533. package/dist/storage/providers/callback-storage.js.map +1 -0
  534. package/dist/storage/providers/dropbox.cjs +237 -0
  535. package/dist/storage/providers/dropbox.cjs.map +1 -0
  536. package/dist/storage/providers/dropbox.d.ts +39 -0
  537. package/dist/storage/providers/dropbox.js +215 -0
  538. package/dist/storage/providers/dropbox.js.map +1 -0
  539. package/dist/storage/providers/dropbox.test.d.ts +1 -0
  540. package/dist/storage/providers/google-drive.cjs +516 -0
  541. package/dist/storage/providers/google-drive.cjs.map +1 -0
  542. package/dist/storage/providers/google-drive.d.ts +152 -0
  543. package/dist/storage/providers/google-drive.js +494 -0
  544. package/dist/storage/providers/google-drive.js.map +1 -0
  545. package/dist/storage/providers/google-drive.test.d.ts +1 -0
  546. package/dist/storage/providers/ipfs.cjs +283 -0
  547. package/dist/storage/providers/ipfs.cjs.map +1 -0
  548. package/dist/storage/providers/ipfs.d.ts +160 -0
  549. package/dist/storage/providers/ipfs.js +261 -0
  550. package/dist/storage/providers/ipfs.js.map +1 -0
  551. package/dist/storage/providers/pinata.cjs +339 -0
  552. package/dist/storage/providers/pinata.cjs.map +1 -0
  553. package/dist/storage/providers/pinata.d.ts +168 -0
  554. package/dist/storage/providers/pinata.js +317 -0
  555. package/dist/storage/providers/pinata.js.map +1 -0
  556. package/dist/storage/tests/callbackStorage.test.d.ts +1 -0
  557. package/dist/storage/tests/googleDriveStorage.test.d.ts +1 -0
  558. package/dist/storage/tests/ipfsStorage.test.d.ts +1 -0
  559. package/dist/storage/tests/pinataStorage.test.d.ts +1 -0
  560. package/dist/storage/tests/storageManager.test.d.ts +1 -0
  561. package/dist/tests/abi.test.d.ts +1 -0
  562. package/dist/tests/chains-definitions.test.d.ts +1 -0
  563. package/dist/tests/core-encryption.test.d.ts +1 -0
  564. package/dist/tests/core-extended.test.d.ts +1 -0
  565. package/dist/tests/core-generics-coverage.test.d.ts +1 -0
  566. package/dist/tests/coverage-boost.test.d.ts +1 -0
  567. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +1 -0
  568. package/dist/tests/data-addfile-permissions-schema.test.d.ts +1 -0
  569. package/dist/tests/data-additional-methods.test.d.ts +1 -0
  570. package/dist/tests/data-controller-edge-cases.test.d.ts +1 -0
  571. package/dist/tests/data-ipfs-gateways.test.d.ts +1 -0
  572. package/dist/tests/data-relayer.test.d.ts +1 -0
  573. package/dist/tests/data-schema-validation.test.d.ts +1 -0
  574. package/dist/tests/data-simple-methods.test.d.ts +1 -0
  575. package/dist/tests/data-upload-owner-validation.test.d.ts +1 -0
  576. package/dist/tests/data.test.d.ts +1 -0
  577. package/dist/tests/demo-integration.test.d.ts +1 -0
  578. package/dist/tests/demo-trusted-server-integration.test.d.ts +1 -0
  579. package/dist/tests/download-relayer.test.d.ts +1 -0
  580. package/dist/tests/dual-mode-permissions.test.d.ts +1 -0
  581. package/dist/tests/dual-mode-trusted-servers.test.d.ts +1 -0
  582. package/dist/tests/encryption-correct-implementation.test.d.ts +1 -0
  583. package/dist/tests/encryption-coverage.test.d.ts +1 -0
  584. package/dist/tests/encryption-edge-cases.test.d.ts +1 -0
  585. package/dist/tests/encryption-utils-updated.test.d.ts +1 -0
  586. package/dist/tests/errors-coverage.test.d.ts +1 -0
  587. package/dist/tests/errors.test.d.ts +1 -0
  588. package/dist/tests/factories/mockFactory.d.ts +316 -0
  589. package/dist/tests/fakes/FakeStorageManager.d.ts +200 -0
  590. package/dist/tests/fakes/FakeStorageManager.test.d.ts +1 -0
  591. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +170 -0
  592. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +1 -0
  593. package/dist/tests/fakes/fake-pgp-port.d.ts +13 -0
  594. package/dist/tests/grantValidation-edge-cases.test.d.ts +1 -0
  595. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +1 -0
  596. package/dist/tests/helper-methods.test.d.ts +1 -0
  597. package/dist/tests/helpers/platformTestHelpers.d.ts +106 -0
  598. package/dist/tests/helpers/typedMocks.d.ts +64 -0
  599. package/dist/tests/index-browser.test.d.ts +1 -0
  600. package/dist/tests/index-node.test.d.ts +1 -0
  601. package/dist/tests/index.test.d.ts +1 -0
  602. package/dist/tests/mocks/platformAdapter.d.ts +12 -0
  603. package/dist/tests/new-permissions-methods.test.d.ts +1 -0
  604. package/dist/tests/no-buffer-browser.test.d.ts +1 -0
  605. package/dist/tests/permissions-grantee.test.d.ts +1 -0
  606. package/dist/tests/permissions-revoke-relayer.test.d.ts +1 -0
  607. package/dist/tests/permissions-schema-validation.test.d.ts +1 -0
  608. package/dist/tests/permissions-server-files.test.d.ts +1 -0
  609. package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
  610. package/dist/tests/permissions-trust-servers.test.d.ts +1 -0
  611. package/dist/tests/permissions.test.d.ts +1 -0
  612. package/dist/tests/personal.test.d.ts +1 -0
  613. package/dist/tests/platform-browser.test.d.ts +1 -0
  614. package/dist/tests/platform-crypto-expanded.test.d.ts +1 -0
  615. package/dist/tests/platform-crypto.test.d.ts +1 -0
  616. package/dist/tests/platform-index.test.d.ts +1 -0
  617. package/dist/tests/platform-node.test.d.ts +1 -0
  618. package/dist/tests/platform-shared-utils.test.d.ts +1 -0
  619. package/dist/tests/platform-updated.test.d.ts +1 -0
  620. package/dist/tests/protocol-additional-methods.test.d.ts +1 -0
  621. package/dist/tests/protocol.test.d.ts +1 -0
  622. package/dist/tests/read-only-mode.test.d.ts +1 -0
  623. package/dist/tests/relayer-integration.test.d.ts +1 -0
  624. package/dist/tests/relayer-unified.test.d.ts +1 -0
  625. package/dist/tests/schemas.test.d.ts +1 -0
  626. package/dist/tests/server-relayer-handler.test.d.ts +1 -0
  627. package/dist/tests/setup.d.ts +7 -0
  628. package/dist/tests/signatureFormatter.test.d.ts +1 -0
  629. package/dist/tests/trusted-server-queries.test.d.ts +1 -0
  630. package/dist/tests/typedDataConverter.test.d.ts +1 -0
  631. package/dist/tests/types-contracts.test.d.ts +1 -0
  632. package/dist/tests/types-data.test.d.ts +1 -0
  633. package/dist/tests/types-external-apis.test.d.ts +1 -0
  634. package/dist/tests/types-generics.test.d.ts +1 -0
  635. package/dist/tests/types-permissions.test.d.ts +1 -0
  636. package/dist/tests/types-upload-params.test.d.ts +1 -0
  637. package/dist/tests/types.test.d.ts +1 -0
  638. package/dist/tests/utils-formatters.test.d.ts +1 -0
  639. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +1 -0
  640. package/dist/tests/utils-grantFiles-validation.test.d.ts +1 -0
  641. package/dist/tests/utils-grantFiles.test.d.ts +1 -0
  642. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +1 -0
  643. package/dist/tests/utils-grants.test.d.ts +1 -0
  644. package/dist/tests/utils-ipfs-additional.test.d.ts +1 -0
  645. package/dist/tests/utils-ipfs.test.d.ts +4 -0
  646. package/dist/tests/utils-schemaValidation.test.d.ts +1 -0
  647. package/dist/tests/vana.test.d.ts +1 -0
  648. package/dist/tests/wallet-crypto-compatibility.test.d.ts +1 -0
  649. package/dist/types/atomicStore.cjs +31 -0
  650. package/dist/types/atomicStore.cjs.map +1 -0
  651. package/dist/types/atomicStore.d.ts +236 -0
  652. package/dist/types/atomicStore.js +7 -0
  653. package/dist/types/atomicStore.js.map +1 -0
  654. package/dist/types/blockchain.cjs +17 -0
  655. package/dist/types/blockchain.cjs.map +1 -0
  656. package/dist/types/blockchain.d.ts +85 -0
  657. package/dist/types/blockchain.js +1 -0
  658. package/dist/types/blockchain.js.map +1 -0
  659. package/dist/types/chains-additional.test.d.ts +1 -0
  660. package/dist/types/chains.cjs +36 -0
  661. package/dist/types/chains.cjs.map +1 -0
  662. package/dist/types/chains.d.ts +98 -0
  663. package/dist/types/chains.js +11 -0
  664. package/dist/types/chains.js.map +1 -0
  665. package/dist/types/config.cjs +51 -0
  666. package/dist/types/config.cjs.map +1 -0
  667. package/dist/types/config.d.ts +720 -0
  668. package/dist/types/config.js +23 -0
  669. package/dist/types/config.js.map +1 -0
  670. package/dist/types/contracts.cjs +17 -0
  671. package/dist/types/contracts.cjs.map +1 -0
  672. package/dist/types/contracts.d.ts +129 -0
  673. package/dist/types/contracts.js +1 -0
  674. package/dist/types/contracts.js.map +1 -0
  675. package/dist/types/controller-context.cjs +17 -0
  676. package/dist/types/controller-context.cjs.map +1 -0
  677. package/dist/types/controller-context.d.ts +68 -0
  678. package/dist/types/controller-context.js +1 -0
  679. package/dist/types/controller-context.js.map +1 -0
  680. package/dist/types/data.cjs +17 -0
  681. package/dist/types/data.cjs.map +1 -0
  682. package/dist/types/data.d.ts +763 -0
  683. package/dist/types/data.js +1 -0
  684. package/dist/types/data.js.map +1 -0
  685. package/dist/types/eccrypto-js.d.cjs +2 -0
  686. package/dist/types/eccrypto-js.d.cjs.map +1 -0
  687. package/dist/types/eccrypto-js.d.js +1 -0
  688. package/dist/types/eccrypto-js.d.js.map +1 -0
  689. package/dist/types/external-apis.cjs +61 -0
  690. package/dist/types/external-apis.cjs.map +1 -0
  691. package/dist/types/external-apis.d.ts +184 -0
  692. package/dist/types/external-apis.js +34 -0
  693. package/dist/types/external-apis.js.map +1 -0
  694. package/dist/types/generics.cjs +17 -0
  695. package/dist/types/generics.cjs.map +1 -0
  696. package/dist/types/generics.d.ts +518 -0
  697. package/dist/types/generics.js +1 -0
  698. package/dist/types/generics.js.map +1 -0
  699. package/dist/types/index.cjs +65 -0
  700. package/dist/types/index.cjs.map +1 -0
  701. package/dist/types/index.d.ts +48 -0
  702. package/dist/types/index.js +42 -0
  703. package/dist/types/index.js.map +1 -0
  704. package/dist/types/operationStore.cjs +17 -0
  705. package/dist/types/operationStore.cjs.map +1 -0
  706. package/dist/types/operationStore.d.ts +171 -0
  707. package/dist/types/operationStore.js +1 -0
  708. package/dist/types/operationStore.js.map +1 -0
  709. package/dist/types/operations.cjs +53 -0
  710. package/dist/types/operations.cjs.map +1 -0
  711. package/dist/types/operations.d.ts +204 -0
  712. package/dist/types/operations.js +26 -0
  713. package/dist/types/operations.js.map +1 -0
  714. package/dist/types/options.cjs +17 -0
  715. package/dist/types/options.cjs.map +1 -0
  716. package/dist/types/options.d.ts +308 -0
  717. package/dist/types/options.js +1 -0
  718. package/dist/types/options.js.map +1 -0
  719. package/dist/types/permissions.cjs +17 -0
  720. package/dist/types/permissions.cjs.map +1 -0
  721. package/dist/types/permissions.d.ts +953 -0
  722. package/dist/types/permissions.js +1 -0
  723. package/dist/types/permissions.js.map +1 -0
  724. package/dist/types/personal.cjs +17 -0
  725. package/dist/types/personal.cjs.map +1 -0
  726. package/dist/types/personal.d.ts +174 -0
  727. package/dist/types/personal.js +1 -0
  728. package/dist/types/personal.js.map +1 -0
  729. package/dist/types/relayer.cjs +17 -0
  730. package/dist/types/relayer.cjs.map +1 -0
  731. package/dist/types/relayer.d.ts +552 -0
  732. package/dist/types/relayer.js +1 -0
  733. package/dist/types/relayer.js.map +1 -0
  734. package/dist/types/storage.cjs +39 -0
  735. package/dist/types/storage.cjs.map +1 -0
  736. package/dist/types/storage.d.ts +117 -0
  737. package/dist/types/storage.js +15 -0
  738. package/dist/types/storage.js.map +1 -0
  739. package/dist/types/transactionResults.cjs +17 -0
  740. package/dist/types/transactionResults.cjs.map +1 -0
  741. package/dist/types/transactionResults.d.ts +193 -0
  742. package/dist/types/transactionResults.js +1 -0
  743. package/dist/types/transactionResults.js.map +1 -0
  744. package/dist/types/utils.cjs +17 -0
  745. package/dist/types/utils.cjs.map +1 -0
  746. package/dist/types/utils.d.ts +771 -0
  747. package/dist/types/utils.js +1 -0
  748. package/dist/types/utils.js.map +1 -0
  749. package/dist/types.cjs +23 -0
  750. package/dist/types.cjs.map +1 -0
  751. package/dist/types.d.ts +30 -0
  752. package/dist/types.js +2 -0
  753. package/dist/types.js.map +1 -0
  754. package/dist/utils/__tests__/chainQuery.test.d.ts +1 -0
  755. package/dist/utils/__tests__/parseTransaction.test.d.ts +1 -0
  756. package/dist/utils/__tests__/pojo-serialization.test.d.ts +1 -0
  757. package/dist/utils/__tests__/signatureCache.test.d.ts +1 -0
  758. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +4 -0
  759. package/dist/utils/__tests__/subgraphPagination.test.d.ts +4 -0
  760. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +1 -0
  761. package/dist/utils/__tests__/transactionHelpers.test.d.ts +1 -0
  762. package/dist/utils/__tests__/urlResolver.test.d.ts +4 -0
  763. package/dist/utils/blockchain/registry.cjs +81 -0
  764. package/dist/utils/blockchain/registry.cjs.map +1 -0
  765. package/dist/utils/blockchain/registry.d.ts +32 -0
  766. package/dist/utils/blockchain/registry.js +56 -0
  767. package/dist/utils/blockchain/registry.js.map +1 -0
  768. package/dist/utils/blockchain/registry.test.d.ts +1 -0
  769. package/dist/utils/chainQuery.cjs +107 -0
  770. package/dist/utils/chainQuery.cjs.map +1 -0
  771. package/dist/utils/chainQuery.d.ts +31 -0
  772. package/dist/utils/chainQuery.js +82 -0
  773. package/dist/utils/chainQuery.js.map +1 -0
  774. package/dist/utils/crypto-utils.cjs +108 -0
  775. package/dist/utils/crypto-utils.cjs.map +1 -0
  776. package/dist/utils/crypto-utils.d.ts +100 -0
  777. package/dist/utils/crypto-utils.js +76 -0
  778. package/dist/utils/crypto-utils.js.map +1 -0
  779. package/dist/utils/crypto-utils.test.d.ts +1 -0
  780. package/dist/utils/download.cjs +69 -0
  781. package/dist/utils/download.cjs.map +1 -0
  782. package/dist/utils/download.d.ts +40 -0
  783. package/dist/utils/download.js +45 -0
  784. package/dist/utils/download.js.map +1 -0
  785. package/dist/utils/encoding.cjs +66 -0
  786. package/dist/utils/encoding.cjs.map +1 -0
  787. package/dist/utils/encoding.d.ts +52 -0
  788. package/dist/utils/encoding.js +39 -0
  789. package/dist/utils/encoding.js.map +1 -0
  790. package/dist/utils/encoding.test.d.ts +1 -0
  791. package/dist/utils/encryption.cjs +176 -0
  792. package/dist/utils/encryption.cjs.map +1 -0
  793. package/dist/utils/encryption.d.ts +271 -0
  794. package/dist/utils/encryption.js +142 -0
  795. package/dist/utils/encryption.js.map +1 -0
  796. package/dist/utils/formatters.cjs +55 -0
  797. package/dist/utils/formatters.cjs.map +1 -0
  798. package/dist/utils/formatters.d.ts +118 -0
  799. package/dist/utils/formatters.js +28 -0
  800. package/dist/utils/formatters.js.map +1 -0
  801. package/dist/utils/grantFiles.cjs +181 -0
  802. package/dist/utils/grantFiles.cjs.map +1 -0
  803. package/dist/utils/grantFiles.d.ts +172 -0
  804. package/dist/utils/grantFiles.js +143 -0
  805. package/dist/utils/grantFiles.js.map +1 -0
  806. package/dist/utils/grantValidation.cjs +243 -0
  807. package/dist/utils/grantValidation.cjs.map +1 -0
  808. package/dist/utils/grantValidation.d.ts +226 -0
  809. package/dist/utils/grantValidation.js +201 -0
  810. package/dist/utils/grantValidation.js.map +1 -0
  811. package/dist/utils/grants.cjs +108 -0
  812. package/dist/utils/grants.cjs.map +1 -0
  813. package/dist/utils/grants.d.ts +148 -0
  814. package/dist/utils/grants.js +82 -0
  815. package/dist/utils/grants.js.map +1 -0
  816. package/dist/utils/ipfs.cjs +128 -0
  817. package/dist/utils/ipfs.cjs.map +1 -0
  818. package/dist/utils/ipfs.d.ts +88 -0
  819. package/dist/utils/ipfs.js +97 -0
  820. package/dist/utils/ipfs.js.map +1 -0
  821. package/dist/utils/lazy-import.cjs +38 -0
  822. package/dist/utils/lazy-import.cjs.map +1 -0
  823. package/dist/utils/lazy-import.d.ts +43 -0
  824. package/dist/utils/lazy-import.js +14 -0
  825. package/dist/utils/lazy-import.js.map +1 -0
  826. package/dist/utils/multicall.cjs +233 -0
  827. package/dist/utils/multicall.cjs.map +1 -0
  828. package/dist/utils/multicall.d.ts +126 -0
  829. package/dist/utils/multicall.js +208 -0
  830. package/dist/utils/multicall.js.map +1 -0
  831. package/dist/utils/parseTransactionPojo.cjs +87 -0
  832. package/dist/utils/parseTransactionPojo.cjs.map +1 -0
  833. package/dist/utils/parseTransactionPojo.d.ts +31 -0
  834. package/dist/utils/parseTransactionPojo.js +63 -0
  835. package/dist/utils/parseTransactionPojo.js.map +1 -0
  836. package/dist/utils/schemaValidation.cjs +258 -0
  837. package/dist/utils/schemaValidation.cjs.map +1 -0
  838. package/dist/utils/schemaValidation.d.ts +168 -0
  839. package/dist/utils/schemaValidation.js +219 -0
  840. package/dist/utils/schemaValidation.js.map +1 -0
  841. package/dist/utils/signatureCache.cjs +192 -0
  842. package/dist/utils/signatureCache.cjs.map +1 -0
  843. package/dist/utils/signatureCache.d.ts +172 -0
  844. package/dist/utils/signatureCache.js +167 -0
  845. package/dist/utils/signatureCache.js.map +1 -0
  846. package/dist/utils/signatureFormatter.cjs +42 -0
  847. package/dist/utils/signatureFormatter.cjs.map +1 -0
  848. package/dist/utils/signatureFormatter.d.ts +36 -0
  849. package/dist/utils/signatureFormatter.js +18 -0
  850. package/dist/utils/signatureFormatter.js.map +1 -0
  851. package/dist/utils/subgraphConsistency.cjs +184 -0
  852. package/dist/utils/subgraphConsistency.cjs.map +1 -0
  853. package/dist/utils/subgraphConsistency.d.ts +65 -0
  854. package/dist/utils/subgraphConsistency.js +155 -0
  855. package/dist/utils/subgraphConsistency.js.map +1 -0
  856. package/dist/utils/subgraphMetaCache.cjs +101 -0
  857. package/dist/utils/subgraphMetaCache.cjs.map +1 -0
  858. package/dist/utils/subgraphMetaCache.d.ts +56 -0
  859. package/dist/utils/subgraphMetaCache.js +76 -0
  860. package/dist/utils/subgraphMetaCache.js.map +1 -0
  861. package/dist/utils/subgraphPagination.cjs +104 -0
  862. package/dist/utils/subgraphPagination.cjs.map +1 -0
  863. package/dist/utils/subgraphPagination.d.ts +78 -0
  864. package/dist/utils/subgraphPagination.js +78 -0
  865. package/dist/utils/subgraphPagination.js.map +1 -0
  866. package/dist/utils/tests/multicall.test.d.ts +1 -0
  867. package/dist/utils/transactionHelpers.cjs +54 -0
  868. package/dist/utils/transactionHelpers.cjs.map +1 -0
  869. package/dist/utils/transactionHelpers.d.ts +80 -0
  870. package/dist/utils/transactionHelpers.js +29 -0
  871. package/dist/utils/transactionHelpers.js.map +1 -0
  872. package/dist/utils/typeGuards.cjs +109 -0
  873. package/dist/utils/typeGuards.cjs.map +1 -0
  874. package/dist/utils/typeGuards.d.ts +138 -0
  875. package/dist/utils/typeGuards.js +74 -0
  876. package/dist/utils/typeGuards.js.map +1 -0
  877. package/dist/utils/typedDataConverter.cjs +43 -0
  878. package/dist/utils/typedDataConverter.cjs.map +1 -0
  879. package/dist/utils/typedDataConverter.d.ts +46 -0
  880. package/dist/utils/typedDataConverter.js +19 -0
  881. package/dist/utils/typedDataConverter.js.map +1 -0
  882. package/dist/utils/urlResolver.cjs +62 -0
  883. package/dist/utils/urlResolver.cjs.map +1 -0
  884. package/dist/utils/urlResolver.d.ts +56 -0
  885. package/dist/utils/urlResolver.js +37 -0
  886. package/dist/utils/urlResolver.js.map +1 -0
  887. package/dist/utils/wallet.cjs +63 -0
  888. package/dist/utils/wallet.cjs.map +1 -0
  889. package/dist/utils/wallet.d.ts +94 -0
  890. package/dist/utils/wallet.js +37 -0
  891. package/dist/utils/wallet.js.map +1 -0
  892. package/dist/utils/withEvents.cjs +44 -0
  893. package/dist/utils/withEvents.cjs.map +1 -0
  894. package/dist/utils/withEvents.d.ts +56 -0
  895. package/dist/utils/withEvents.js +18 -0
  896. package/dist/utils/withEvents.js.map +1 -0
  897. package/package.json +63 -29
  898. package/dist/browser-DY8XDblx.d.ts +0 -241
  899. package/dist/chains.browser.cjs.map +0 -1
  900. package/dist/chains.d.cts +0 -2
  901. package/dist/chains.node.d.cts +0 -2
  902. package/dist/index.d.cts +0 -2
  903. package/dist/node-D9-F9uEP.d.cts +0 -238
  904. package/dist/node-D9-F9uEP.d.ts +0 -238
  905. package/dist/node.d.cts +0 -1
  906. package/dist/platform.d.cts +0 -2
  907. package/dist/platform.node.d.cts +0 -105
@@ -0,0 +1,265 @@
1
+ class SystemHealthChecker {
2
+ config;
3
+ constructor(config) {
4
+ this.config = {
5
+ ...config,
6
+ addresses: config.addresses ?? [],
7
+ staleThresholdSeconds: config.staleThresholdSeconds ?? 300
8
+ };
9
+ }
10
+ /**
11
+ * Performs a comprehensive health check of the system.
12
+ *
13
+ * @returns The health status of the system
14
+ */
15
+ async check() {
16
+ const timestamp = Date.now();
17
+ const errors = [];
18
+ const atomicStore = await this.checkAtomicStore();
19
+ if (atomicStore.status !== "healthy") {
20
+ errors.push(`Atomic store ${atomicStore.status}: ${atomicStore.message}`);
21
+ }
22
+ const operationStore = await this.checkOperationStore();
23
+ if (operationStore.status !== "healthy") {
24
+ errors.push(
25
+ `Operation store ${operationStore.status}: ${operationStore.message}`
26
+ );
27
+ }
28
+ const blockchain = await this.checkBlockchain();
29
+ if (blockchain.status !== "healthy") {
30
+ errors.push(`Blockchain ${blockchain.status}: ${blockchain.message}`);
31
+ }
32
+ let nonces;
33
+ if (this.config.addresses.length > 0) {
34
+ nonces = await this.checkNonces();
35
+ for (const nonce of nonces) {
36
+ if (nonce.status !== "healthy") {
37
+ errors.push(`Nonce ${nonce.status} for ${nonce.address}`);
38
+ }
39
+ }
40
+ }
41
+ const queue = await this.checkQueue();
42
+ if (queue && queue.isStale) {
43
+ errors.push(
44
+ `Queue is stale (oldest pending: ${queue.oldestPending}s ago)`
45
+ );
46
+ }
47
+ let status;
48
+ if (errors.length === 0) {
49
+ status = "healthy";
50
+ } else if (atomicStore.status === "unhealthy" || operationStore.status === "unhealthy" || blockchain.status === "unhealthy") {
51
+ status = "unhealthy";
52
+ } else {
53
+ status = "degraded";
54
+ }
55
+ return {
56
+ status,
57
+ timestamp,
58
+ checks: {
59
+ atomicStore,
60
+ operationStore,
61
+ blockchain,
62
+ nonces,
63
+ queue
64
+ },
65
+ errors: errors.length > 0 ? errors : void 0
66
+ };
67
+ }
68
+ /**
69
+ * Checks the health of the atomic store.
70
+ */
71
+ async checkAtomicStore() {
72
+ try {
73
+ const start = Date.now();
74
+ const testKey = `health:check:${Date.now()}`;
75
+ await this.config.atomicStore.set(testKey, "test");
76
+ const value = await this.config.atomicStore.get(testKey);
77
+ if (value !== "test") {
78
+ return {
79
+ status: "unhealthy",
80
+ message: "Atomic store read/write test failed"
81
+ };
82
+ }
83
+ if (this.config.atomicStore.delete) {
84
+ await this.config.atomicStore.delete(testKey);
85
+ }
86
+ const latency = Date.now() - start;
87
+ if (latency > 1e3) {
88
+ return {
89
+ status: "degraded",
90
+ message: `High latency: ${latency}ms`,
91
+ latency
92
+ };
93
+ }
94
+ return {
95
+ status: "healthy",
96
+ latency
97
+ };
98
+ } catch (error) {
99
+ return {
100
+ status: "unhealthy",
101
+ message: error instanceof Error ? error.message : "Unknown error"
102
+ };
103
+ }
104
+ }
105
+ /**
106
+ * Checks the health of the operation store.
107
+ */
108
+ async checkOperationStore() {
109
+ try {
110
+ const start = Date.now();
111
+ await this.config.operationStore.getQueuedOperations({ limit: 1 });
112
+ const latency = Date.now() - start;
113
+ if (latency > 2e3) {
114
+ return {
115
+ status: "degraded",
116
+ message: `High latency: ${latency}ms`,
117
+ latency
118
+ };
119
+ }
120
+ return {
121
+ status: "healthy",
122
+ latency
123
+ };
124
+ } catch (error) {
125
+ return {
126
+ status: "unhealthy",
127
+ message: error instanceof Error ? error.message : "Unknown error"
128
+ };
129
+ }
130
+ }
131
+ /**
132
+ * Checks blockchain connectivity.
133
+ */
134
+ async checkBlockchain() {
135
+ try {
136
+ const start = Date.now();
137
+ const blockNumber = await this.config.publicClient.getBlockNumber();
138
+ if (blockNumber === 0n) {
139
+ return {
140
+ status: "unhealthy",
141
+ message: "Invalid block number"
142
+ };
143
+ }
144
+ const latency = Date.now() - start;
145
+ if (latency > 5e3) {
146
+ return {
147
+ status: "degraded",
148
+ message: `High latency: ${latency}ms`,
149
+ latency
150
+ };
151
+ }
152
+ return {
153
+ status: "healthy",
154
+ latency
155
+ };
156
+ } catch (error) {
157
+ return {
158
+ status: "unhealthy",
159
+ message: error instanceof Error ? error.message : "Unknown error"
160
+ };
161
+ }
162
+ }
163
+ /**
164
+ * Checks nonce synchronization for configured addresses.
165
+ */
166
+ async checkNonces() {
167
+ const results = [];
168
+ for (const address of this.config.addresses) {
169
+ try {
170
+ const lastUsedKey = `nonce:${this.config.chainId}:${address}:lastUsed`;
171
+ const lastUsedStr = await this.config.atomicStore.get(lastUsedKey);
172
+ const lastUsed = lastUsedStr ? parseInt(lastUsedStr) : -1;
173
+ const [pendingCount, confirmedCount] = await Promise.all([
174
+ this.config.publicClient.getTransactionCount({
175
+ address,
176
+ blockTag: "pending"
177
+ }),
178
+ this.config.publicClient.getTransactionCount({
179
+ address,
180
+ blockTag: "latest"
181
+ })
182
+ ]);
183
+ const blockchainPending = pendingCount === 0 ? -1 : Number(pendingCount) - 1;
184
+ const blockchainConfirmed = confirmedCount === 0 ? -1 : Number(confirmedCount) - 1;
185
+ let status;
186
+ const gap = blockchainPending - blockchainConfirmed;
187
+ if (lastUsed < blockchainConfirmed) {
188
+ status = "desynced";
189
+ } else if (gap > 5) {
190
+ status = "stuck";
191
+ } else {
192
+ status = "healthy";
193
+ }
194
+ results.push({
195
+ address,
196
+ status,
197
+ lastUsed,
198
+ blockchainPending,
199
+ blockchainConfirmed,
200
+ gap: gap > 0 ? gap : void 0
201
+ });
202
+ } catch {
203
+ results.push({
204
+ address,
205
+ status: "desynced",
206
+ lastUsed: -1,
207
+ blockchainPending: -1,
208
+ blockchainConfirmed: -1
209
+ });
210
+ }
211
+ }
212
+ return results;
213
+ }
214
+ /**
215
+ * Checks operation queue health.
216
+ */
217
+ async checkQueue() {
218
+ try {
219
+ const [pending, processing, failed] = await Promise.all([
220
+ this.config.operationStore.getQueuedOperations({ limit: 100 }),
221
+ this.config.operationStore.getProcessingOperations?.({ limit: 100 }),
222
+ this.config.operationStore.getFailedOperations?.({ limit: 100 })
223
+ ]);
224
+ const pendingCount = pending.length;
225
+ const processingCount = processing?.length ?? 0;
226
+ const failedCount = failed?.length ?? 0;
227
+ let oldestPending;
228
+ let isStale = false;
229
+ if (pendingCount > 0 && pending[0].createdAt) {
230
+ const ageSeconds = Math.floor(
231
+ (Date.now() - pending[0].createdAt) / 1e3
232
+ );
233
+ oldestPending = ageSeconds;
234
+ isStale = ageSeconds > this.config.staleThresholdSeconds;
235
+ }
236
+ return {
237
+ pendingCount,
238
+ processingCount,
239
+ failedCount,
240
+ oldestPending,
241
+ isStale
242
+ };
243
+ } catch {
244
+ return void 0;
245
+ }
246
+ }
247
+ /**
248
+ * Gets a simple health check response for HTTP endpoints.
249
+ *
250
+ * @returns A simple health object suitable for JSON response
251
+ */
252
+ async getSimpleHealth() {
253
+ const health = await this.check();
254
+ return {
255
+ healthy: health.status === "healthy",
256
+ status: health.status,
257
+ timestamp: health.timestamp,
258
+ errors: health.errors
259
+ };
260
+ }
261
+ }
262
+ export {
263
+ SystemHealthChecker
264
+ };
265
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/health.ts"],"sourcesContent":["/**\n * System health monitoring for distributed relayer deployments.\n *\n * @module\n */\n\nimport type { IAtomicStore } from \"../types/atomicStore\";\nimport type { IOperationStore } from \"../types/operationStore\";\nimport type { PublicClient } from \"viem\";\n\n/**\n * Configuration for SystemHealthChecker.\n */\nexport interface SystemHealthCheckerConfig {\n /** Atomic store for distributed state */\n atomicStore: IAtomicStore;\n /** Operation store for queue state */\n operationStore: IOperationStore;\n /** Public client for blockchain queries */\n publicClient: PublicClient;\n /** Chain ID to monitor */\n chainId: number;\n /** Addresses to monitor (optional) */\n addresses?: string[];\n /** Stale threshold in seconds (default: 300) */\n staleThresholdSeconds?: number;\n}\n\n/**\n * Health status for the system.\n */\nexport interface HealthStatus {\n /** Overall health status */\n status: \"healthy\" | \"degraded\" | \"unhealthy\";\n /** Timestamp of the check */\n timestamp: number;\n /** Individual component checks */\n checks: {\n atomicStore: ComponentHealth;\n operationStore: ComponentHealth;\n blockchain: ComponentHealth;\n nonces?: NonceHealth[];\n queue?: QueueHealth;\n };\n /** Any error messages */\n errors?: string[];\n}\n\n/**\n * Health status for a component.\n */\nexport interface ComponentHealth {\n status: \"healthy\" | \"degraded\" | \"unhealthy\";\n message?: string;\n latency?: number;\n}\n\n/**\n * Nonce health for an address.\n */\nexport interface NonceHealth {\n address: string;\n status: \"healthy\" | \"stuck\" | \"desynced\";\n lastUsed: number;\n blockchainPending: number;\n blockchainConfirmed: number;\n gap?: number;\n}\n\n/**\n * Queue health information.\n */\nexport interface QueueHealth {\n pendingCount: number;\n processingCount: number;\n failedCount: number;\n oldestPending?: number;\n isStale: boolean;\n}\n\n/**\n * System health checker for monitoring distributed relayer deployments.\n *\n * @remarks\n * This class provides comprehensive health monitoring for relayer systems:\n * - Storage backend connectivity and performance\n * - Blockchain RPC availability\n * - Nonce synchronization status\n * - Operation queue health\n * - Stuck transaction detection\n *\n * @example\n * ```typescript\n * const healthChecker = new SystemHealthChecker({\n * atomicStore,\n * operationStore,\n * publicClient,\n * chainId: 14800,\n * addresses: [relayerAddress]\n * });\n *\n * const health = await healthChecker.check();\n * if (health.status === 'unhealthy') {\n * console.error('System unhealthy:', health.errors);\n * }\n * ```\n *\n * @category Health\n */\nexport class SystemHealthChecker {\n private readonly config: Required<SystemHealthCheckerConfig>;\n\n constructor(config: SystemHealthCheckerConfig) {\n this.config = {\n ...config,\n addresses: config.addresses ?? [],\n staleThresholdSeconds: config.staleThresholdSeconds ?? 300,\n };\n }\n\n /**\n * Performs a comprehensive health check of the system.\n *\n * @returns The health status of the system\n */\n async check(): Promise<HealthStatus> {\n const timestamp = Date.now();\n const errors: string[] = [];\n\n // Check atomic store\n const atomicStore = await this.checkAtomicStore();\n if (atomicStore.status !== \"healthy\") {\n errors.push(`Atomic store ${atomicStore.status}: ${atomicStore.message}`);\n }\n\n // Check operation store\n const operationStore = await this.checkOperationStore();\n if (operationStore.status !== \"healthy\") {\n errors.push(\n `Operation store ${operationStore.status}: ${operationStore.message}`,\n );\n }\n\n // Check blockchain connectivity\n const blockchain = await this.checkBlockchain();\n if (blockchain.status !== \"healthy\") {\n errors.push(`Blockchain ${blockchain.status}: ${blockchain.message}`);\n }\n\n // Check nonces if addresses provided\n let nonces: NonceHealth[] | undefined;\n if (this.config.addresses.length > 0) {\n nonces = await this.checkNonces();\n for (const nonce of nonces) {\n if (nonce.status !== \"healthy\") {\n errors.push(`Nonce ${nonce.status} for ${nonce.address}`);\n }\n }\n }\n\n // Check queue health\n const queue = await this.checkQueue();\n if (queue && queue.isStale) {\n errors.push(\n `Queue is stale (oldest pending: ${queue.oldestPending}s ago)`,\n );\n }\n\n // Determine overall status\n let status: \"healthy\" | \"degraded\" | \"unhealthy\";\n if (errors.length === 0) {\n status = \"healthy\";\n } else if (\n atomicStore.status === \"unhealthy\" ||\n operationStore.status === \"unhealthy\" ||\n blockchain.status === \"unhealthy\"\n ) {\n status = \"unhealthy\";\n } else {\n status = \"degraded\";\n }\n\n return {\n status,\n timestamp,\n checks: {\n atomicStore,\n operationStore,\n blockchain,\n nonces,\n queue,\n },\n errors: errors.length > 0 ? errors : undefined,\n };\n }\n\n /**\n * Checks the health of the atomic store.\n */\n private async checkAtomicStore(): Promise<ComponentHealth> {\n try {\n const start = Date.now();\n const testKey = `health:check:${Date.now()}`;\n\n // Test basic operations\n await this.config.atomicStore.set(testKey, \"test\");\n const value = await this.config.atomicStore.get(testKey);\n\n if (value !== \"test\") {\n return {\n status: \"unhealthy\",\n message: \"Atomic store read/write test failed\",\n };\n }\n\n // Clean up\n if (this.config.atomicStore.delete) {\n await this.config.atomicStore.delete(testKey);\n }\n\n const latency = Date.now() - start;\n\n if (latency > 1000) {\n return {\n status: \"degraded\",\n message: `High latency: ${latency}ms`,\n latency,\n };\n }\n\n return {\n status: \"healthy\",\n latency,\n };\n } catch (error) {\n return {\n status: \"unhealthy\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * Checks the health of the operation store.\n */\n private async checkOperationStore(): Promise<ComponentHealth> {\n try {\n const start = Date.now();\n\n // Test basic query\n await this.config.operationStore.getQueuedOperations({ limit: 1 });\n\n const latency = Date.now() - start;\n\n if (latency > 2000) {\n return {\n status: \"degraded\",\n message: `High latency: ${latency}ms`,\n latency,\n };\n }\n\n return {\n status: \"healthy\",\n latency,\n };\n } catch (error) {\n return {\n status: \"unhealthy\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * Checks blockchain connectivity.\n */\n private async checkBlockchain(): Promise<ComponentHealth> {\n try {\n const start = Date.now();\n\n // Test RPC connectivity\n const blockNumber = await this.config.publicClient.getBlockNumber();\n\n if (blockNumber === 0n) {\n return {\n status: \"unhealthy\",\n message: \"Invalid block number\",\n };\n }\n\n const latency = Date.now() - start;\n\n if (latency > 5000) {\n return {\n status: \"degraded\",\n message: `High latency: ${latency}ms`,\n latency,\n };\n }\n\n return {\n status: \"healthy\",\n latency,\n };\n } catch (error) {\n return {\n status: \"unhealthy\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * Checks nonce synchronization for configured addresses.\n */\n private async checkNonces(): Promise<NonceHealth[]> {\n const results: NonceHealth[] = [];\n\n for (const address of this.config.addresses) {\n try {\n const lastUsedKey = `nonce:${this.config.chainId}:${address}:lastUsed`;\n\n // Get stored nonce\n const lastUsedStr = await this.config.atomicStore.get(lastUsedKey);\n const lastUsed = lastUsedStr ? parseInt(lastUsedStr) : -1;\n\n // Get blockchain nonces\n const [pendingCount, confirmedCount] = await Promise.all([\n this.config.publicClient.getTransactionCount({\n address: address as `0x${string}`,\n blockTag: \"pending\",\n }),\n this.config.publicClient.getTransactionCount({\n address: address as `0x${string}`,\n blockTag: \"latest\",\n }),\n ]);\n\n const blockchainPending =\n pendingCount === 0 ? -1 : Number(pendingCount) - 1;\n const blockchainConfirmed =\n confirmedCount === 0 ? -1 : Number(confirmedCount) - 1;\n\n // Determine status\n let status: \"healthy\" | \"stuck\" | \"desynced\";\n const gap = blockchainPending - blockchainConfirmed;\n\n if (lastUsed < blockchainConfirmed) {\n status = \"desynced\";\n } else if (gap > 5) {\n status = \"stuck\";\n } else {\n status = \"healthy\";\n }\n\n results.push({\n address,\n status,\n lastUsed,\n blockchainPending,\n blockchainConfirmed,\n gap: gap > 0 ? gap : undefined,\n });\n } catch {\n results.push({\n address,\n status: \"desynced\",\n lastUsed: -1,\n blockchainPending: -1,\n blockchainConfirmed: -1,\n });\n }\n }\n\n return results;\n }\n\n /**\n * Checks operation queue health.\n */\n private async checkQueue(): Promise<QueueHealth | undefined> {\n try {\n const [pending, processing, failed] = await Promise.all([\n this.config.operationStore.getQueuedOperations({ limit: 100 }),\n this.config.operationStore.getProcessingOperations?.({ limit: 100 }),\n this.config.operationStore.getFailedOperations?.({ limit: 100 }),\n ]);\n\n const pendingCount = pending.length;\n const processingCount = processing?.length ?? 0;\n const failedCount = failed?.length ?? 0;\n\n // Check for stale operations\n let oldestPending: number | undefined;\n let isStale = false;\n\n if (pendingCount > 0 && pending[0].createdAt) {\n const ageSeconds = Math.floor(\n (Date.now() - pending[0].createdAt) / 1000,\n );\n oldestPending = ageSeconds;\n isStale = ageSeconds > this.config.staleThresholdSeconds;\n }\n\n return {\n pendingCount,\n processingCount,\n failedCount,\n oldestPending,\n isStale,\n };\n } catch {\n return undefined;\n }\n }\n\n /**\n * Gets a simple health check response for HTTP endpoints.\n *\n * @returns A simple health object suitable for JSON response\n */\n async getSimpleHealth(): Promise<{\n healthy: boolean;\n status: string;\n timestamp: number;\n errors?: string[];\n }> {\n const health = await this.check();\n\n return {\n healthy: health.status === \"healthy\",\n status: health.status,\n timestamp: health.timestamp,\n errors: health.errors,\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var inMemoryNonceManager_exports = {};
20
+ __export(inMemoryNonceManager_exports, {
21
+ InMemoryNonceManager: () => InMemoryNonceManager
22
+ });
23
+ module.exports = __toCommonJS(inMemoryNonceManager_exports);
24
+ class InMemoryNonceManager {
25
+ publicClient;
26
+ lastUsedNonces = /* @__PURE__ */ new Map();
27
+ constructor(publicClient) {
28
+ this.publicClient = publicClient;
29
+ }
30
+ /**
31
+ * Assigns the next available nonce for an address.
32
+ *
33
+ * @remarks
34
+ * This method:
35
+ * 1. Gets the pending count from the blockchain
36
+ * 2. Compares with the last used nonce in memory
37
+ * 3. Returns the higher of (pending count, last used + 1)
38
+ *
39
+ * @param address - The address to assign a nonce for
40
+ * @param chainId - The chain ID for the network
41
+ * @returns The assigned nonce (never returns null in single-instance mode)
42
+ */
43
+ async assignNonce(address, chainId) {
44
+ const key = `${chainId}:${address}`;
45
+ const pendingCount = await this.publicClient.getTransactionCount({
46
+ address,
47
+ blockTag: "pending"
48
+ });
49
+ const lastUsed = this.lastUsedNonces.get(key) ?? -1;
50
+ const nextNonce = Math.max(pendingCount, lastUsed + 1);
51
+ this.lastUsedNonces.set(key, nextNonce);
52
+ console.log(
53
+ `[InMemoryNonceManager] Assigned nonce ${nextNonce} for ${address} on chain ${chainId} (pending: ${pendingCount}, lastUsed: ${lastUsed})`
54
+ );
55
+ return nextNonce;
56
+ }
57
+ /**
58
+ * Resets the nonce counter for an address.
59
+ *
60
+ * @remarks
61
+ * Clears the in-memory tracking for an address, causing the next
62
+ * assignment to use the blockchain's pending count.
63
+ *
64
+ * @param address - The address to reset
65
+ * @param chainId - The chain ID for the network
66
+ */
67
+ async resetNonce(address, chainId) {
68
+ const key = `${chainId}:${address}`;
69
+ this.lastUsedNonces.delete(key);
70
+ console.log(
71
+ `[InMemoryNonceManager] Reset nonce for ${address} on chain ${chainId}`
72
+ );
73
+ }
74
+ /**
75
+ * Burns a stuck nonce by sending a minimal self-transfer with higher gas.
76
+ *
77
+ * @remarks
78
+ * This is the same implementation as DistributedNonceManager for consistency.
79
+ *
80
+ * @param walletClient - The wallet client to send the burn transaction
81
+ * @param nonceToBurn - The nonce to burn
82
+ * @param address - The address whose nonce to burn
83
+ * @param chainId - The chain ID for the network
84
+ * @param gasMultiplier - Multiplier for gas prices (default: 1.5)
85
+ * @returns The transaction hash of the burn transaction
86
+ */
87
+ async burnNonce(walletClient, nonceToBurn, address, chainId, gasMultiplier = 1.5) {
88
+ try {
89
+ const fees = await this.publicClient.estimateFeesPerGas();
90
+ const bump = (x) => x * BigInt(Math.floor(gasMultiplier * 100)) / 100n;
91
+ const newMaxFee = bump(fees.maxFeePerGas);
92
+ const newMaxPriorityFee = bump(fees.maxPriorityFeePerGas);
93
+ console.log(
94
+ `[InMemoryNonceManager] Burning stuck nonce ${nonceToBurn} with high gas`
95
+ );
96
+ const burnTx = await walletClient.sendTransaction({
97
+ account: walletClient.account,
98
+ to: address,
99
+ value: 0n,
100
+ nonce: nonceToBurn,
101
+ gas: 21000n,
102
+ maxFeePerGas: newMaxFee,
103
+ maxPriorityFeePerGas: newMaxPriorityFee,
104
+ chain: {
105
+ id: chainId,
106
+ name: chainId === 14800 ? "Vana Moksha" : "Vana Mainnet",
107
+ network: chainId === 14800 ? "moksha" : "mainnet",
108
+ nativeCurrency: { name: "VANA", symbol: "VANA", decimals: 18 },
109
+ rpcUrls: {
110
+ default: {
111
+ http: [
112
+ chainId === 14800 ? "https://rpc.moksha.vana.org" : "https://rpc.vana.org"
113
+ ]
114
+ },
115
+ public: {
116
+ http: [
117
+ chainId === 14800 ? "https://rpc.moksha.vana.org" : "https://rpc.vana.org"
118
+ ]
119
+ }
120
+ }
121
+ }
122
+ });
123
+ console.log(`[InMemoryNonceManager] Burn transaction sent: ${burnTx}`);
124
+ return burnTx;
125
+ } catch (error) {
126
+ console.error(
127
+ `[InMemoryNonceManager] Error burning nonce ${nonceToBurn}:`,
128
+ error
129
+ );
130
+ throw error;
131
+ }
132
+ }
133
+ }
134
+ // Annotate the CommonJS export names for ESM import in node:
135
+ 0 && (module.exports = {
136
+ InMemoryNonceManager
137
+ });
138
+ //# sourceMappingURL=inMemoryNonceManager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/inMemoryNonceManager.ts"],"sourcesContent":["/**\n * Simple in-memory nonce manager for single-instance deployments.\n *\n * @internal\n * @module\n */\n\nimport type { PublicClient, WalletClient, Address, Hash } from \"viem\";\n\n/**\n * Simple nonce manager for single-instance deployments.\n *\n * @internal\n * @remarks\n * This class provides nonce management for single-instance deployments\n * where distributed coordination is not needed. It keeps track of nonces\n * in memory and syncs with the blockchain's pending count.\n *\n * ⚠️ WARNING: This should ONLY be used for single-instance deployments.\n * Using this with multiple instances will cause nonce conflicts!\n *\n * Key features:\n * - Simple in-memory tracking\n * - Syncs with blockchain pending count\n * - No external dependencies (no Redis needed)\n * - Suitable for hobby projects and development\n */\nexport class InMemoryNonceManager {\n private readonly publicClient: PublicClient;\n private readonly lastUsedNonces = new Map<string, number>();\n\n constructor(publicClient: PublicClient) {\n this.publicClient = publicClient;\n }\n\n /**\n * Assigns the next available nonce for an address.\n *\n * @remarks\n * This method:\n * 1. Gets the pending count from the blockchain\n * 2. Compares with the last used nonce in memory\n * 3. Returns the higher of (pending count, last used + 1)\n *\n * @param address - The address to assign a nonce for\n * @param chainId - The chain ID for the network\n * @returns The assigned nonce (never returns null in single-instance mode)\n */\n async assignNonce(address: Address, chainId: number): Promise<number | null> {\n const key = `${chainId}:${address}`;\n\n // Get pending transaction count from blockchain\n const pendingCount = await this.publicClient.getTransactionCount({\n address,\n blockTag: \"pending\",\n });\n\n // Get last used nonce from memory\n const lastUsed = this.lastUsedNonces.get(key) ?? -1;\n\n // Calculate next nonce (max of pending count or last used + 1)\n const nextNonce = Math.max(pendingCount, lastUsed + 1);\n\n // Update memory\n this.lastUsedNonces.set(key, nextNonce);\n\n console.log(\n `[InMemoryNonceManager] Assigned nonce ${nextNonce} for ${address} on chain ${chainId} (pending: ${pendingCount}, lastUsed: ${lastUsed})`,\n );\n\n return nextNonce;\n }\n\n /**\n * Resets the nonce counter for an address.\n *\n * @remarks\n * Clears the in-memory tracking for an address, causing the next\n * assignment to use the blockchain's pending count.\n *\n * @param address - The address to reset\n * @param chainId - The chain ID for the network\n */\n async resetNonce(address: Address, chainId: number): Promise<void> {\n const key = `${chainId}:${address}`;\n this.lastUsedNonces.delete(key);\n\n console.log(\n `[InMemoryNonceManager] Reset nonce for ${address} on chain ${chainId}`,\n );\n }\n\n /**\n * Burns a stuck nonce by sending a minimal self-transfer with higher gas.\n *\n * @remarks\n * This is the same implementation as DistributedNonceManager for consistency.\n *\n * @param walletClient - The wallet client to send the burn transaction\n * @param nonceToBurn - The nonce to burn\n * @param address - The address whose nonce to burn\n * @param chainId - The chain ID for the network\n * @param gasMultiplier - Multiplier for gas prices (default: 1.5)\n * @returns The transaction hash of the burn transaction\n */\n async burnNonce(\n walletClient: WalletClient,\n nonceToBurn: number,\n address: Address,\n chainId: number,\n gasMultiplier: number = 1.5,\n ): Promise<Hash> {\n try {\n // Get current gas prices\n const fees = await this.publicClient.estimateFeesPerGas();\n\n // Bump gas prices by multiplier\n const bump = (x: bigint) =>\n (x * BigInt(Math.floor(gasMultiplier * 100))) / 100n;\n\n const newMaxFee = bump(fees.maxFeePerGas);\n const newMaxPriorityFee = bump(fees.maxPriorityFeePerGas);\n\n console.log(\n `[InMemoryNonceManager] Burning stuck nonce ${nonceToBurn} with high gas`,\n );\n\n // Send minimal self-transfer to burn the nonce\n const burnTx = await walletClient.sendTransaction({\n account: walletClient.account!,\n to: address,\n value: 0n,\n nonce: nonceToBurn,\n gas: 21000n,\n maxFeePerGas: newMaxFee,\n maxPriorityFeePerGas: newMaxPriorityFee,\n chain: {\n id: chainId,\n name: chainId === 14800 ? \"Vana Moksha\" : \"Vana Mainnet\",\n network: chainId === 14800 ? \"moksha\" : \"mainnet\",\n nativeCurrency: { name: \"VANA\", symbol: \"VANA\", decimals: 18 },\n rpcUrls: {\n default: {\n http: [\n chainId === 14800\n ? \"https://rpc.moksha.vana.org\"\n : \"https://rpc.vana.org\",\n ],\n },\n public: {\n http: [\n chainId === 14800\n ? \"https://rpc.moksha.vana.org\"\n : \"https://rpc.vana.org\",\n ],\n },\n },\n },\n });\n\n console.log(`[InMemoryNonceManager] Burn transaction sent: ${burnTx}`);\n return burnTx;\n } catch (error) {\n console.error(\n `[InMemoryNonceManager] Error burning nonce ${nonceToBurn}:`,\n error,\n );\n throw error;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BO,MAAM,qBAAqB;AAAA,EACf;AAAA,EACA,iBAAiB,oBAAI,IAAoB;AAAA,EAE1D,YAAY,cAA4B;AACtC,SAAK,eAAe;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,YAAY,SAAkB,SAAyC;AAC3E,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO;AAGjC,UAAM,eAAe,MAAM,KAAK,aAAa,oBAAoB;AAAA,MAC/D;AAAA,MACA,UAAU;AAAA,IACZ,CAAC;AAGD,UAAM,WAAW,KAAK,eAAe,IAAI,GAAG,KAAK;AAGjD,UAAM,YAAY,KAAK,IAAI,cAAc,WAAW,CAAC;AAGrD,SAAK,eAAe,IAAI,KAAK,SAAS;AAEtC,YAAQ;AAAA,MACN,yCAAyC,SAAS,QAAQ,OAAO,aAAa,OAAO,cAAc,YAAY,eAAe,QAAQ;AAAA,IACxI;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,WAAW,SAAkB,SAAgC;AACjE,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO;AACjC,SAAK,eAAe,OAAO,GAAG;AAE9B,YAAQ;AAAA,MACN,0CAA0C,OAAO,aAAa,OAAO;AAAA,IACvE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,UACJ,cACA,aACA,SACA,SACA,gBAAwB,KACT;AACf,QAAI;AAEF,YAAM,OAAO,MAAM,KAAK,aAAa,mBAAmB;AAGxD,YAAM,OAAO,CAAC,MACX,IAAI,OAAO,KAAK,MAAM,gBAAgB,GAAG,CAAC,IAAK;AAElD,YAAM,YAAY,KAAK,KAAK,YAAY;AACxC,YAAM,oBAAoB,KAAK,KAAK,oBAAoB;AAExD,cAAQ;AAAA,QACN,8CAA8C,WAAW;AAAA,MAC3D;AAGA,YAAM,SAAS,MAAM,aAAa,gBAAgB;AAAA,QAChD,SAAS,aAAa;AAAA,QACtB,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK;AAAA,QACL,cAAc;AAAA,QACd,sBAAsB;AAAA,QACtB,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,MAAM,YAAY,QAAQ,gBAAgB;AAAA,UAC1C,SAAS,YAAY,QAAQ,WAAW;AAAA,UACxC,gBAAgB,EAAE,MAAM,QAAQ,QAAQ,QAAQ,UAAU,GAAG;AAAA,UAC7D,SAAS;AAAA,YACP,SAAS;AAAA,cACP,MAAM;AAAA,gBACJ,YAAY,QACR,gCACA;AAAA,cACN;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,MAAM;AAAA,gBACJ,YAAY,QACR,gCACA;AAAA,cACN;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAED,cAAQ,IAAI,iDAAiD,MAAM,EAAE;AACrE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ;AAAA,QACN,8CAA8C,WAAW;AAAA,QACzD;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Simple in-memory nonce manager for single-instance deployments.
3
+ *
4
+ * @internal
5
+ * @module
6
+ */
7
+ import type { PublicClient, WalletClient, Address, Hash } from "viem";
8
+ /**
9
+ * Simple nonce manager for single-instance deployments.
10
+ *
11
+ * @internal
12
+ * @remarks
13
+ * This class provides nonce management for single-instance deployments
14
+ * where distributed coordination is not needed. It keeps track of nonces
15
+ * in memory and syncs with the blockchain's pending count.
16
+ *
17
+ * ⚠️ WARNING: This should ONLY be used for single-instance deployments.
18
+ * Using this with multiple instances will cause nonce conflicts!
19
+ *
20
+ * Key features:
21
+ * - Simple in-memory tracking
22
+ * - Syncs with blockchain pending count
23
+ * - No external dependencies (no Redis needed)
24
+ * - Suitable for hobby projects and development
25
+ */
26
+ export declare class InMemoryNonceManager {
27
+ private readonly publicClient;
28
+ private readonly lastUsedNonces;
29
+ constructor(publicClient: PublicClient);
30
+ /**
31
+ * Assigns the next available nonce for an address.
32
+ *
33
+ * @remarks
34
+ * This method:
35
+ * 1. Gets the pending count from the blockchain
36
+ * 2. Compares with the last used nonce in memory
37
+ * 3. Returns the higher of (pending count, last used + 1)
38
+ *
39
+ * @param address - The address to assign a nonce for
40
+ * @param chainId - The chain ID for the network
41
+ * @returns The assigned nonce (never returns null in single-instance mode)
42
+ */
43
+ assignNonce(address: Address, chainId: number): Promise<number | null>;
44
+ /**
45
+ * Resets the nonce counter for an address.
46
+ *
47
+ * @remarks
48
+ * Clears the in-memory tracking for an address, causing the next
49
+ * assignment to use the blockchain's pending count.
50
+ *
51
+ * @param address - The address to reset
52
+ * @param chainId - The chain ID for the network
53
+ */
54
+ resetNonce(address: Address, chainId: number): Promise<void>;
55
+ /**
56
+ * Burns a stuck nonce by sending a minimal self-transfer with higher gas.
57
+ *
58
+ * @remarks
59
+ * This is the same implementation as DistributedNonceManager for consistency.
60
+ *
61
+ * @param walletClient - The wallet client to send the burn transaction
62
+ * @param nonceToBurn - The nonce to burn
63
+ * @param address - The address whose nonce to burn
64
+ * @param chainId - The chain ID for the network
65
+ * @param gasMultiplier - Multiplier for gas prices (default: 1.5)
66
+ * @returns The transaction hash of the burn transaction
67
+ */
68
+ burnNonce(walletClient: WalletClient, nonceToBurn: number, address: Address, chainId: number, gasMultiplier?: number): Promise<Hash>;
69
+ }
@@ -0,0 +1,114 @@
1
+ class InMemoryNonceManager {
2
+ publicClient;
3
+ lastUsedNonces = /* @__PURE__ */ new Map();
4
+ constructor(publicClient) {
5
+ this.publicClient = publicClient;
6
+ }
7
+ /**
8
+ * Assigns the next available nonce for an address.
9
+ *
10
+ * @remarks
11
+ * This method:
12
+ * 1. Gets the pending count from the blockchain
13
+ * 2. Compares with the last used nonce in memory
14
+ * 3. Returns the higher of (pending count, last used + 1)
15
+ *
16
+ * @param address - The address to assign a nonce for
17
+ * @param chainId - The chain ID for the network
18
+ * @returns The assigned nonce (never returns null in single-instance mode)
19
+ */
20
+ async assignNonce(address, chainId) {
21
+ const key = `${chainId}:${address}`;
22
+ const pendingCount = await this.publicClient.getTransactionCount({
23
+ address,
24
+ blockTag: "pending"
25
+ });
26
+ const lastUsed = this.lastUsedNonces.get(key) ?? -1;
27
+ const nextNonce = Math.max(pendingCount, lastUsed + 1);
28
+ this.lastUsedNonces.set(key, nextNonce);
29
+ console.log(
30
+ `[InMemoryNonceManager] Assigned nonce ${nextNonce} for ${address} on chain ${chainId} (pending: ${pendingCount}, lastUsed: ${lastUsed})`
31
+ );
32
+ return nextNonce;
33
+ }
34
+ /**
35
+ * Resets the nonce counter for an address.
36
+ *
37
+ * @remarks
38
+ * Clears the in-memory tracking for an address, causing the next
39
+ * assignment to use the blockchain's pending count.
40
+ *
41
+ * @param address - The address to reset
42
+ * @param chainId - The chain ID for the network
43
+ */
44
+ async resetNonce(address, chainId) {
45
+ const key = `${chainId}:${address}`;
46
+ this.lastUsedNonces.delete(key);
47
+ console.log(
48
+ `[InMemoryNonceManager] Reset nonce for ${address} on chain ${chainId}`
49
+ );
50
+ }
51
+ /**
52
+ * Burns a stuck nonce by sending a minimal self-transfer with higher gas.
53
+ *
54
+ * @remarks
55
+ * This is the same implementation as DistributedNonceManager for consistency.
56
+ *
57
+ * @param walletClient - The wallet client to send the burn transaction
58
+ * @param nonceToBurn - The nonce to burn
59
+ * @param address - The address whose nonce to burn
60
+ * @param chainId - The chain ID for the network
61
+ * @param gasMultiplier - Multiplier for gas prices (default: 1.5)
62
+ * @returns The transaction hash of the burn transaction
63
+ */
64
+ async burnNonce(walletClient, nonceToBurn, address, chainId, gasMultiplier = 1.5) {
65
+ try {
66
+ const fees = await this.publicClient.estimateFeesPerGas();
67
+ const bump = (x) => x * BigInt(Math.floor(gasMultiplier * 100)) / 100n;
68
+ const newMaxFee = bump(fees.maxFeePerGas);
69
+ const newMaxPriorityFee = bump(fees.maxPriorityFeePerGas);
70
+ console.log(
71
+ `[InMemoryNonceManager] Burning stuck nonce ${nonceToBurn} with high gas`
72
+ );
73
+ const burnTx = await walletClient.sendTransaction({
74
+ account: walletClient.account,
75
+ to: address,
76
+ value: 0n,
77
+ nonce: nonceToBurn,
78
+ gas: 21000n,
79
+ maxFeePerGas: newMaxFee,
80
+ maxPriorityFeePerGas: newMaxPriorityFee,
81
+ chain: {
82
+ id: chainId,
83
+ name: chainId === 14800 ? "Vana Moksha" : "Vana Mainnet",
84
+ network: chainId === 14800 ? "moksha" : "mainnet",
85
+ nativeCurrency: { name: "VANA", symbol: "VANA", decimals: 18 },
86
+ rpcUrls: {
87
+ default: {
88
+ http: [
89
+ chainId === 14800 ? "https://rpc.moksha.vana.org" : "https://rpc.vana.org"
90
+ ]
91
+ },
92
+ public: {
93
+ http: [
94
+ chainId === 14800 ? "https://rpc.moksha.vana.org" : "https://rpc.vana.org"
95
+ ]
96
+ }
97
+ }
98
+ }
99
+ });
100
+ console.log(`[InMemoryNonceManager] Burn transaction sent: ${burnTx}`);
101
+ return burnTx;
102
+ } catch (error) {
103
+ console.error(
104
+ `[InMemoryNonceManager] Error burning nonce ${nonceToBurn}:`,
105
+ error
106
+ );
107
+ throw error;
108
+ }
109
+ }
110
+ }
111
+ export {
112
+ InMemoryNonceManager
113
+ };
114
+ //# sourceMappingURL=inMemoryNonceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/inMemoryNonceManager.ts"],"sourcesContent":["/**\n * Simple in-memory nonce manager for single-instance deployments.\n *\n * @internal\n * @module\n */\n\nimport type { PublicClient, WalletClient, Address, Hash } from \"viem\";\n\n/**\n * Simple nonce manager for single-instance deployments.\n *\n * @internal\n * @remarks\n * This class provides nonce management for single-instance deployments\n * where distributed coordination is not needed. It keeps track of nonces\n * in memory and syncs with the blockchain's pending count.\n *\n * ⚠️ WARNING: This should ONLY be used for single-instance deployments.\n * Using this with multiple instances will cause nonce conflicts!\n *\n * Key features:\n * - Simple in-memory tracking\n * - Syncs with blockchain pending count\n * - No external dependencies (no Redis needed)\n * - Suitable for hobby projects and development\n */\nexport class InMemoryNonceManager {\n private readonly publicClient: PublicClient;\n private readonly lastUsedNonces = new Map<string, number>();\n\n constructor(publicClient: PublicClient) {\n this.publicClient = publicClient;\n }\n\n /**\n * Assigns the next available nonce for an address.\n *\n * @remarks\n * This method:\n * 1. Gets the pending count from the blockchain\n * 2. Compares with the last used nonce in memory\n * 3. Returns the higher of (pending count, last used + 1)\n *\n * @param address - The address to assign a nonce for\n * @param chainId - The chain ID for the network\n * @returns The assigned nonce (never returns null in single-instance mode)\n */\n async assignNonce(address: Address, chainId: number): Promise<number | null> {\n const key = `${chainId}:${address}`;\n\n // Get pending transaction count from blockchain\n const pendingCount = await this.publicClient.getTransactionCount({\n address,\n blockTag: \"pending\",\n });\n\n // Get last used nonce from memory\n const lastUsed = this.lastUsedNonces.get(key) ?? -1;\n\n // Calculate next nonce (max of pending count or last used + 1)\n const nextNonce = Math.max(pendingCount, lastUsed + 1);\n\n // Update memory\n this.lastUsedNonces.set(key, nextNonce);\n\n console.log(\n `[InMemoryNonceManager] Assigned nonce ${nextNonce} for ${address} on chain ${chainId} (pending: ${pendingCount}, lastUsed: ${lastUsed})`,\n );\n\n return nextNonce;\n }\n\n /**\n * Resets the nonce counter for an address.\n *\n * @remarks\n * Clears the in-memory tracking for an address, causing the next\n * assignment to use the blockchain's pending count.\n *\n * @param address - The address to reset\n * @param chainId - The chain ID for the network\n */\n async resetNonce(address: Address, chainId: number): Promise<void> {\n const key = `${chainId}:${address}`;\n this.lastUsedNonces.delete(key);\n\n console.log(\n `[InMemoryNonceManager] Reset nonce for ${address} on chain ${chainId}`,\n );\n }\n\n /**\n * Burns a stuck nonce by sending a minimal self-transfer with higher gas.\n *\n * @remarks\n * This is the same implementation as DistributedNonceManager for consistency.\n *\n * @param walletClient - The wallet client to send the burn transaction\n * @param nonceToBurn - The nonce to burn\n * @param address - The address whose nonce to burn\n * @param chainId - The chain ID for the network\n * @param gasMultiplier - Multiplier for gas prices (default: 1.5)\n * @returns The transaction hash of the burn transaction\n */\n async burnNonce(\n walletClient: WalletClient,\n nonceToBurn: number,\n address: Address,\n chainId: number,\n gasMultiplier: number = 1.5,\n ): Promise<Hash> {\n try {\n // Get current gas prices\n const fees = await this.publicClient.estimateFeesPerGas();\n\n // Bump gas prices by multiplier\n const bump = (x: bigint) =>\n (x * BigInt(Math.floor(gasMultiplier * 100))) / 100n;\n\n const newMaxFee = bump(fees.maxFeePerGas);\n const newMaxPriorityFee = bump(fees.maxPriorityFeePerGas);\n\n console.log(\n `[InMemoryNonceManager] Burning stuck nonce ${nonceToBurn} with high gas`,\n );\n\n // Send minimal self-transfer to burn the nonce\n const burnTx = await walletClient.sendTransaction({\n account: walletClient.account!,\n to: address,\n value: 0n,\n nonce: nonceToBurn,\n gas: 21000n,\n maxFeePerGas: newMaxFee,\n maxPriorityFeePerGas: newMaxPriorityFee,\n chain: {\n id: chainId,\n name: chainId === 14800 ? \"Vana Moksha\" : \"Vana Mainnet\",\n network: chainId === 14800 ? \"moksha\" : \"mainnet\",\n nativeCurrency: { name: \"VANA\", symbol: \"VANA\", decimals: 18 },\n rpcUrls: {\n default: {\n http: [\n chainId === 14800\n ? \"https://rpc.moksha.vana.org\"\n : \"https://rpc.vana.org\",\n ],\n },\n public: {\n http: [\n chainId === 14800\n ? \"https://rpc.moksha.vana.org\"\n : \"https://rpc.vana.org\",\n ],\n },\n },\n },\n });\n\n console.log(`[InMemoryNonceManager] Burn transaction sent: ${burnTx}`);\n return burnTx;\n } catch (error) {\n console.error(\n `[InMemoryNonceManager] Error burning nonce ${nonceToBurn}:`,\n error,\n );\n throw error;\n }\n }\n}\n"],"mappings":"AA2BO,MAAM,qBAAqB;AAAA,EACf;AAAA,EACA,iBAAiB,oBAAI,IAAoB;AAAA,EAE1D,YAAY,cAA4B;AACtC,SAAK,eAAe;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,YAAY,SAAkB,SAAyC;AAC3E,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO;AAGjC,UAAM,eAAe,MAAM,KAAK,aAAa,oBAAoB;AAAA,MAC/D;AAAA,MACA,UAAU;AAAA,IACZ,CAAC;AAGD,UAAM,WAAW,KAAK,eAAe,IAAI,GAAG,KAAK;AAGjD,UAAM,YAAY,KAAK,IAAI,cAAc,WAAW,CAAC;AAGrD,SAAK,eAAe,IAAI,KAAK,SAAS;AAEtC,YAAQ;AAAA,MACN,yCAAyC,SAAS,QAAQ,OAAO,aAAa,OAAO,cAAc,YAAY,eAAe,QAAQ;AAAA,IACxI;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,WAAW,SAAkB,SAAgC;AACjE,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO;AACjC,SAAK,eAAe,OAAO,GAAG;AAE9B,YAAQ;AAAA,MACN,0CAA0C,OAAO,aAAa,OAAO;AAAA,IACvE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,UACJ,cACA,aACA,SACA,SACA,gBAAwB,KACT;AACf,QAAI;AAEF,YAAM,OAAO,MAAM,KAAK,aAAa,mBAAmB;AAGxD,YAAM,OAAO,CAAC,MACX,IAAI,OAAO,KAAK,MAAM,gBAAgB,GAAG,CAAC,IAAK;AAElD,YAAM,YAAY,KAAK,KAAK,YAAY;AACxC,YAAM,oBAAoB,KAAK,KAAK,oBAAoB;AAExD,cAAQ;AAAA,QACN,8CAA8C,WAAW;AAAA,MAC3D;AAGA,YAAM,SAAS,MAAM,aAAa,gBAAgB;AAAA,QAChD,SAAS,aAAa;AAAA,QACtB,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK;AAAA,QACL,cAAc;AAAA,QACd,sBAAsB;AAAA,QACtB,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,MAAM,YAAY,QAAQ,gBAAgB;AAAA,UAC1C,SAAS,YAAY,QAAQ,WAAW;AAAA,UACxC,gBAAgB,EAAE,MAAM,QAAQ,QAAQ,QAAQ,UAAU,GAAG;AAAA,UAC7D,SAAS;AAAA,YACP,SAAS;AAAA,cACP,MAAM;AAAA,gBACJ,YAAY,QACR,gCACA;AAAA,cACN;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,MAAM;AAAA,gBACJ,YAAY,QACR,gCACA;AAAA,cACN;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAED,cAAQ,IAAI,iDAAiD,MAAM,EAAE;AACrE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ;AAAA,QACN,8CAA8C,WAAW;AAAA,QACzD;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}