@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 @@
1
+ export {};
@@ -0,0 +1,201 @@
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 redisAtomicStore_exports = {};
20
+ __export(redisAtomicStore_exports, {
21
+ RedisAtomicStore: () => RedisAtomicStore
22
+ });
23
+ module.exports = __toCommonJS(redisAtomicStore_exports);
24
+ class RedisAtomicStore {
25
+ redis;
26
+ // ioredis instance
27
+ keyPrefix;
28
+ /**
29
+ * Lua script for safe lock release.
30
+ * This ensures we only delete a lock if the value matches our lock ID.
31
+ */
32
+ UNLOCK_SCRIPT = `
33
+ if redis.call("GET", KEYS[1]) == ARGV[1] then
34
+ return redis.call("DEL", KEYS[1])
35
+ else
36
+ return 0
37
+ end
38
+ `;
39
+ constructor(config) {
40
+ if (typeof config.redis === "string") {
41
+ throw new Error(
42
+ "RedisAtomicStore requires an initialized Redis client instance. Please create the Redis client in your application and pass it to the constructor."
43
+ );
44
+ }
45
+ this.redis = config.redis;
46
+ this.keyPrefix = config.keyPrefix ?? "vana-sdk:atomic";
47
+ if (!this.redis || typeof this.redis.incr !== "function" || typeof this.redis.set !== "function" || typeof this.redis.get !== "function" || typeof this.redis.eval !== "function") {
48
+ throw new Error(
49
+ "Invalid Redis client instance provided to RedisAtomicStore"
50
+ );
51
+ }
52
+ }
53
+ /**
54
+ * Atomically increments a counter.
55
+ */
56
+ async incr(key) {
57
+ const fullKey = `${this.keyPrefix}:${key}`;
58
+ return await this.redis.incr(fullKey);
59
+ }
60
+ /**
61
+ * Acquires a distributed lock using SET NX EX.
62
+ */
63
+ async acquireLock(key, ttlSeconds) {
64
+ const fullKey = `${this.keyPrefix}:${key}`;
65
+ const lockId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
66
+ const result = await this.redis.set(
67
+ fullKey,
68
+ lockId,
69
+ "EX",
70
+ ttlSeconds,
71
+ "NX"
72
+ );
73
+ if (result === "OK") {
74
+ console.log(`[RedisAtomicStore] Lock acquired: ${key} with ID ${lockId}`);
75
+ return lockId;
76
+ }
77
+ return null;
78
+ }
79
+ /**
80
+ * Releases a lock using a Lua script for atomicity.
81
+ */
82
+ async releaseLock(key, lockId) {
83
+ const fullKey = `${this.keyPrefix}:${key}`;
84
+ const result = await this.redis.eval(
85
+ this.UNLOCK_SCRIPT,
86
+ 1,
87
+ // Number of keys
88
+ fullKey,
89
+ // KEYS[1]
90
+ lockId
91
+ // ARGV[1]
92
+ );
93
+ if (result === 1) {
94
+ console.log(`[RedisAtomicStore] Lock released: ${key}`);
95
+ } else {
96
+ console.warn(
97
+ `[RedisAtomicStore] Lock release failed: ${key} (lock not held or expired)`
98
+ );
99
+ }
100
+ }
101
+ /**
102
+ * Gets a value from Redis.
103
+ */
104
+ async get(key) {
105
+ const fullKey = `${this.keyPrefix}:${key}`;
106
+ return await this.redis.get(fullKey);
107
+ }
108
+ /**
109
+ * Sets a value in Redis.
110
+ */
111
+ async set(key, value) {
112
+ const fullKey = `${this.keyPrefix}:${key}`;
113
+ await this.redis.set(fullKey, value);
114
+ }
115
+ /**
116
+ * Sets a value with TTL for automatic expiration.
117
+ */
118
+ async setWithTTL(key, value, ttlSeconds) {
119
+ const fullKey = `${this.keyPrefix}:${key}`;
120
+ await this.redis.setex(fullKey, ttlSeconds, value);
121
+ }
122
+ /**
123
+ * Deletes a key from Redis.
124
+ */
125
+ async delete(key) {
126
+ const fullKey = `${this.keyPrefix}:${key}`;
127
+ await this.redis.del(fullKey);
128
+ }
129
+ /**
130
+ * Executes a Lua script atomically.
131
+ *
132
+ * @remarks
133
+ * This provides generic script execution for complex atomic operations.
134
+ * Keys passed to the script will be automatically prefixed.
135
+ *
136
+ * @param script - The Lua script to execute
137
+ * @param keys - Array of keys (will be prefixed)
138
+ * @param args - Array of arguments
139
+ * @returns The script's return value
140
+ */
141
+ async eval(script, keys, args) {
142
+ const prefixedKeys = keys.map((key) => `${this.keyPrefix}:${key}`);
143
+ const result = await this.redis.eval(
144
+ script,
145
+ keys.length,
146
+ ...prefixedKeys,
147
+ ...args
148
+ );
149
+ return result;
150
+ }
151
+ /**
152
+ * Atomically assigns a nonce using Vana App's battle-tested logic.
153
+ *
154
+ * @remarks
155
+ * This is a Redis-specific optimization that uses a Lua script for
156
+ * atomic nonce assignment with gap prevention. This method is called
157
+ * by DistributedNonceManager when it detects a Redis store.
158
+ *
159
+ * Ported from apps/web/app/api/relay/route.ts (Vana App production code)
160
+ * DO NOT MODIFY without thorough testing in production environment.
161
+ *
162
+ * @param key - The key for storing the last used nonce
163
+ * @param pendingCount - The current pending transaction count from blockchain
164
+ * @returns The assigned nonce
165
+ */
166
+ async atomicAssignNonce(key, pendingCount) {
167
+ const LUA_ASSIGN_NONCE = `
168
+ -- KEYS[1] = lastUsedKey
169
+ -- ARGV[1] = pendingCount (integer)
170
+
171
+ local last = tonumber(redis.call("GET", KEYS[1]) or "-1")
172
+ local pending = tonumber(ARGV[1])
173
+ local candidate = last + 1
174
+ if pending > candidate or (candidate - pending > 500) then
175
+ -- If pending is ahead OR if candidate is too far ahead (>500 nonces), reset to pending
176
+ candidate = pending
177
+ end
178
+
179
+ -- IMPORTANT: Atomically update the last used nonce
180
+ redis.call("SET", KEYS[1], candidate)
181
+
182
+ return candidate
183
+ `;
184
+ const fullKey = `${this.keyPrefix}:${key}`;
185
+ const nonce = await this.redis.eval(
186
+ LUA_ASSIGN_NONCE,
187
+ 1,
188
+ // Number of keys
189
+ fullKey,
190
+ // KEYS[1]
191
+ pendingCount.toString()
192
+ // ARGV[1]
193
+ );
194
+ return nonce;
195
+ }
196
+ }
197
+ // Annotate the CommonJS export names for ESM import in node:
198
+ 0 && (module.exports = {
199
+ RedisAtomicStore
200
+ });
201
+ //# sourceMappingURL=redisAtomicStore.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/redisAtomicStore.ts"],"sourcesContent":["/**\n * Redis implementation of IAtomicStore for production use.\n *\n * @remarks\n * This is a Node.js-only implementation that requires the ioredis package.\n * It will not be included in browser bundles.\n *\n * @module\n */\n\nimport type { IAtomicStoreWithNonceSupport } from \"../types/atomicStore\";\n\n/**\n * Configuration for RedisAtomicStore\n */\nexport interface RedisAtomicStoreConfig {\n /** Redis connection URL or ioredis options */\n redis: string | any;\n /** Key prefix for all operations (default: 'vana-sdk:atomic') */\n keyPrefix?: string;\n}\n\n/**\n * Redis-backed implementation of IAtomicStore.\n *\n * @remarks\n * This implementation uses Redis's native atomic operations:\n * - INCR for atomic counter increments\n * - SET NX EX for distributed locking\n * - Lua script for safe lock release\n *\n * Redis is ideal for this use case because:\n * - All operations are atomic by design\n * - Built-in TTL support for automatic cleanup\n * - High performance (sub-millisecond operations)\n * - Battle-tested in production environments\n *\n * @example\n * ```typescript\n * import Redis from 'ioredis';\n * import { RedisAtomicStore } from '@opendatalabs/vana-sdk/node';\n *\n * const redis = new Redis(process.env.REDIS_URL);\n * const atomicStore = new RedisAtomicStore({\n * redis: redis\n * });\n *\n * const vana = Vana({\n * walletClient,\n * atomicStore,\n * operationStore\n * });\n * ```\n *\n * @category Storage\n */\nexport class RedisAtomicStore implements IAtomicStoreWithNonceSupport {\n private redis: any; // ioredis instance\n private keyPrefix: string;\n\n /**\n * Lua script for safe lock release.\n * This ensures we only delete a lock if the value matches our lock ID.\n */\n private readonly UNLOCK_SCRIPT = `\n if redis.call(\"GET\", KEYS[1]) == ARGV[1] then\n return redis.call(\"DEL\", KEYS[1])\n else\n return 0\n end\n `;\n\n constructor(config: RedisAtomicStoreConfig) {\n // Dynamic import to avoid bundling ioredis in browser builds\n // The actual Redis instance should be passed in already created\n if (typeof config.redis === \"string\") {\n throw new Error(\n \"RedisAtomicStore requires an initialized Redis client instance. \" +\n \"Please create the Redis client in your application and pass it to the constructor.\",\n );\n }\n\n this.redis = config.redis;\n this.keyPrefix = config.keyPrefix ?? \"vana-sdk:atomic\";\n\n // Validate that the redis instance has the methods we need\n if (\n !this.redis ||\n typeof this.redis.incr !== \"function\" ||\n typeof this.redis.set !== \"function\" ||\n typeof this.redis.get !== \"function\" ||\n typeof this.redis.eval !== \"function\"\n ) {\n throw new Error(\n \"Invalid Redis client instance provided to RedisAtomicStore\",\n );\n }\n }\n\n /**\n * Atomically increments a counter.\n */\n async incr(key: string): Promise<number> {\n const fullKey = `${this.keyPrefix}:${key}`;\n return await this.redis.incr(fullKey);\n }\n\n /**\n * Acquires a distributed lock using SET NX EX.\n */\n async acquireLock(key: string, ttlSeconds: number): Promise<string | null> {\n const fullKey = `${this.keyPrefix}:${key}`;\n const lockId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;\n\n // SET key value NX EX ttl\n const result = await this.redis.set(\n fullKey,\n lockId,\n \"EX\",\n ttlSeconds,\n \"NX\",\n );\n\n if (result === \"OK\") {\n console.log(`[RedisAtomicStore] Lock acquired: ${key} with ID ${lockId}`);\n return lockId;\n }\n\n return null;\n }\n\n /**\n * Releases a lock using a Lua script for atomicity.\n */\n async releaseLock(key: string, lockId: string): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n\n // Use Lua script for atomic compare-and-delete\n const result = (await this.redis.eval(\n this.UNLOCK_SCRIPT,\n 1, // Number of keys\n fullKey, // KEYS[1]\n lockId, // ARGV[1]\n )) as number;\n\n if (result === 1) {\n console.log(`[RedisAtomicStore] Lock released: ${key}`);\n } else {\n console.warn(\n `[RedisAtomicStore] Lock release failed: ${key} (lock not held or expired)`,\n );\n }\n }\n\n /**\n * Gets a value from Redis.\n */\n async get(key: string): Promise<string | null> {\n const fullKey = `${this.keyPrefix}:${key}`;\n return await this.redis.get(fullKey);\n }\n\n /**\n * Sets a value in Redis.\n */\n async set(key: string, value: string): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n await this.redis.set(fullKey, value);\n }\n\n /**\n * Sets a value with TTL for automatic expiration.\n */\n async setWithTTL?(\n key: string,\n value: string,\n ttlSeconds: number,\n ): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n await this.redis.setex(fullKey, ttlSeconds, value);\n }\n\n /**\n * Deletes a key from Redis.\n */\n async delete?(key: string): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n await this.redis.del(fullKey);\n }\n\n /**\n * Executes a Lua script atomically.\n *\n * @remarks\n * This provides generic script execution for complex atomic operations.\n * Keys passed to the script will be automatically prefixed.\n *\n * @param script - The Lua script to execute\n * @param keys - Array of keys (will be prefixed)\n * @param args - Array of arguments\n * @returns The script's return value\n */\n async eval(script: string, keys: string[], args: string[]): Promise<any> {\n // Apply key prefix to all keys\n const prefixedKeys = keys.map((key) => `${this.keyPrefix}:${key}`);\n\n // Execute the Lua script\n const result = await this.redis.eval(\n script,\n keys.length,\n ...prefixedKeys,\n ...args,\n );\n\n return result;\n }\n\n /**\n * Atomically assigns a nonce using Vana App's battle-tested logic.\n *\n * @remarks\n * This is a Redis-specific optimization that uses a Lua script for\n * atomic nonce assignment with gap prevention. This method is called\n * by DistributedNonceManager when it detects a Redis store.\n *\n * Ported from apps/web/app/api/relay/route.ts (Vana App production code)\n * DO NOT MODIFY without thorough testing in production environment.\n *\n * @param key - The key for storing the last used nonce\n * @param pendingCount - The current pending transaction count from blockchain\n * @returns The assigned nonce\n */\n async atomicAssignNonce(key: string, pendingCount: number): Promise<number> {\n const LUA_ASSIGN_NONCE = `\n -- KEYS[1] = lastUsedKey\n -- ARGV[1] = pendingCount (integer)\n\n local last = tonumber(redis.call(\"GET\", KEYS[1]) or \"-1\")\n local pending = tonumber(ARGV[1])\n local candidate = last + 1\n if pending > candidate or (candidate - pending > 500) then\n -- If pending is ahead OR if candidate is too far ahead (>500 nonces), reset to pending\n candidate = pending\n end\n\n -- IMPORTANT: Atomically update the last used nonce\n redis.call(\"SET\", KEYS[1], candidate)\n\n return candidate\n `;\n\n const fullKey = `${this.keyPrefix}:${key}`;\n const nonce = (await this.redis.eval(\n LUA_ASSIGN_NONCE,\n 1, // Number of keys\n fullKey, // KEYS[1]\n pendingCount.toString(), // ARGV[1]\n )) as number;\n\n return nonce;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Redis implementation of IAtomicStore for production use.
3
+ *
4
+ * @remarks
5
+ * This is a Node.js-only implementation that requires the ioredis package.
6
+ * It will not be included in browser bundles.
7
+ *
8
+ * @module
9
+ */
10
+ import type { IAtomicStoreWithNonceSupport } from "../types/atomicStore";
11
+ /**
12
+ * Configuration for RedisAtomicStore
13
+ */
14
+ export interface RedisAtomicStoreConfig {
15
+ /** Redis connection URL or ioredis options */
16
+ redis: string | any;
17
+ /** Key prefix for all operations (default: 'vana-sdk:atomic') */
18
+ keyPrefix?: string;
19
+ }
20
+ /**
21
+ * Redis-backed implementation of IAtomicStore.
22
+ *
23
+ * @remarks
24
+ * This implementation uses Redis's native atomic operations:
25
+ * - INCR for atomic counter increments
26
+ * - SET NX EX for distributed locking
27
+ * - Lua script for safe lock release
28
+ *
29
+ * Redis is ideal for this use case because:
30
+ * - All operations are atomic by design
31
+ * - Built-in TTL support for automatic cleanup
32
+ * - High performance (sub-millisecond operations)
33
+ * - Battle-tested in production environments
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * import Redis from 'ioredis';
38
+ * import { RedisAtomicStore } from '@opendatalabs/vana-sdk/node';
39
+ *
40
+ * const redis = new Redis(process.env.REDIS_URL);
41
+ * const atomicStore = new RedisAtomicStore({
42
+ * redis: redis
43
+ * });
44
+ *
45
+ * const vana = Vana({
46
+ * walletClient,
47
+ * atomicStore,
48
+ * operationStore
49
+ * });
50
+ * ```
51
+ *
52
+ * @category Storage
53
+ */
54
+ export declare class RedisAtomicStore implements IAtomicStoreWithNonceSupport {
55
+ private redis;
56
+ private keyPrefix;
57
+ /**
58
+ * Lua script for safe lock release.
59
+ * This ensures we only delete a lock if the value matches our lock ID.
60
+ */
61
+ private readonly UNLOCK_SCRIPT;
62
+ constructor(config: RedisAtomicStoreConfig);
63
+ /**
64
+ * Atomically increments a counter.
65
+ */
66
+ incr(key: string): Promise<number>;
67
+ /**
68
+ * Acquires a distributed lock using SET NX EX.
69
+ */
70
+ acquireLock(key: string, ttlSeconds: number): Promise<string | null>;
71
+ /**
72
+ * Releases a lock using a Lua script for atomicity.
73
+ */
74
+ releaseLock(key: string, lockId: string): Promise<void>;
75
+ /**
76
+ * Gets a value from Redis.
77
+ */
78
+ get(key: string): Promise<string | null>;
79
+ /**
80
+ * Sets a value in Redis.
81
+ */
82
+ set(key: string, value: string): Promise<void>;
83
+ /**
84
+ * Sets a value with TTL for automatic expiration.
85
+ */
86
+ setWithTTL?(key: string, value: string, ttlSeconds: number): Promise<void>;
87
+ /**
88
+ * Deletes a key from Redis.
89
+ */
90
+ delete?(key: string): Promise<void>;
91
+ /**
92
+ * Executes a Lua script atomically.
93
+ *
94
+ * @remarks
95
+ * This provides generic script execution for complex atomic operations.
96
+ * Keys passed to the script will be automatically prefixed.
97
+ *
98
+ * @param script - The Lua script to execute
99
+ * @param keys - Array of keys (will be prefixed)
100
+ * @param args - Array of arguments
101
+ * @returns The script's return value
102
+ */
103
+ eval(script: string, keys: string[], args: string[]): Promise<any>;
104
+ /**
105
+ * Atomically assigns a nonce using Vana App's battle-tested logic.
106
+ *
107
+ * @remarks
108
+ * This is a Redis-specific optimization that uses a Lua script for
109
+ * atomic nonce assignment with gap prevention. This method is called
110
+ * by DistributedNonceManager when it detects a Redis store.
111
+ *
112
+ * Ported from apps/web/app/api/relay/route.ts (Vana App production code)
113
+ * DO NOT MODIFY without thorough testing in production environment.
114
+ *
115
+ * @param key - The key for storing the last used nonce
116
+ * @param pendingCount - The current pending transaction count from blockchain
117
+ * @returns The assigned nonce
118
+ */
119
+ atomicAssignNonce(key: string, pendingCount: number): Promise<number>;
120
+ }
@@ -0,0 +1,177 @@
1
+ class RedisAtomicStore {
2
+ redis;
3
+ // ioredis instance
4
+ keyPrefix;
5
+ /**
6
+ * Lua script for safe lock release.
7
+ * This ensures we only delete a lock if the value matches our lock ID.
8
+ */
9
+ UNLOCK_SCRIPT = `
10
+ if redis.call("GET", KEYS[1]) == ARGV[1] then
11
+ return redis.call("DEL", KEYS[1])
12
+ else
13
+ return 0
14
+ end
15
+ `;
16
+ constructor(config) {
17
+ if (typeof config.redis === "string") {
18
+ throw new Error(
19
+ "RedisAtomicStore requires an initialized Redis client instance. Please create the Redis client in your application and pass it to the constructor."
20
+ );
21
+ }
22
+ this.redis = config.redis;
23
+ this.keyPrefix = config.keyPrefix ?? "vana-sdk:atomic";
24
+ if (!this.redis || typeof this.redis.incr !== "function" || typeof this.redis.set !== "function" || typeof this.redis.get !== "function" || typeof this.redis.eval !== "function") {
25
+ throw new Error(
26
+ "Invalid Redis client instance provided to RedisAtomicStore"
27
+ );
28
+ }
29
+ }
30
+ /**
31
+ * Atomically increments a counter.
32
+ */
33
+ async incr(key) {
34
+ const fullKey = `${this.keyPrefix}:${key}`;
35
+ return await this.redis.incr(fullKey);
36
+ }
37
+ /**
38
+ * Acquires a distributed lock using SET NX EX.
39
+ */
40
+ async acquireLock(key, ttlSeconds) {
41
+ const fullKey = `${this.keyPrefix}:${key}`;
42
+ const lockId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
43
+ const result = await this.redis.set(
44
+ fullKey,
45
+ lockId,
46
+ "EX",
47
+ ttlSeconds,
48
+ "NX"
49
+ );
50
+ if (result === "OK") {
51
+ console.log(`[RedisAtomicStore] Lock acquired: ${key} with ID ${lockId}`);
52
+ return lockId;
53
+ }
54
+ return null;
55
+ }
56
+ /**
57
+ * Releases a lock using a Lua script for atomicity.
58
+ */
59
+ async releaseLock(key, lockId) {
60
+ const fullKey = `${this.keyPrefix}:${key}`;
61
+ const result = await this.redis.eval(
62
+ this.UNLOCK_SCRIPT,
63
+ 1,
64
+ // Number of keys
65
+ fullKey,
66
+ // KEYS[1]
67
+ lockId
68
+ // ARGV[1]
69
+ );
70
+ if (result === 1) {
71
+ console.log(`[RedisAtomicStore] Lock released: ${key}`);
72
+ } else {
73
+ console.warn(
74
+ `[RedisAtomicStore] Lock release failed: ${key} (lock not held or expired)`
75
+ );
76
+ }
77
+ }
78
+ /**
79
+ * Gets a value from Redis.
80
+ */
81
+ async get(key) {
82
+ const fullKey = `${this.keyPrefix}:${key}`;
83
+ return await this.redis.get(fullKey);
84
+ }
85
+ /**
86
+ * Sets a value in Redis.
87
+ */
88
+ async set(key, value) {
89
+ const fullKey = `${this.keyPrefix}:${key}`;
90
+ await this.redis.set(fullKey, value);
91
+ }
92
+ /**
93
+ * Sets a value with TTL for automatic expiration.
94
+ */
95
+ async setWithTTL(key, value, ttlSeconds) {
96
+ const fullKey = `${this.keyPrefix}:${key}`;
97
+ await this.redis.setex(fullKey, ttlSeconds, value);
98
+ }
99
+ /**
100
+ * Deletes a key from Redis.
101
+ */
102
+ async delete(key) {
103
+ const fullKey = `${this.keyPrefix}:${key}`;
104
+ await this.redis.del(fullKey);
105
+ }
106
+ /**
107
+ * Executes a Lua script atomically.
108
+ *
109
+ * @remarks
110
+ * This provides generic script execution for complex atomic operations.
111
+ * Keys passed to the script will be automatically prefixed.
112
+ *
113
+ * @param script - The Lua script to execute
114
+ * @param keys - Array of keys (will be prefixed)
115
+ * @param args - Array of arguments
116
+ * @returns The script's return value
117
+ */
118
+ async eval(script, keys, args) {
119
+ const prefixedKeys = keys.map((key) => `${this.keyPrefix}:${key}`);
120
+ const result = await this.redis.eval(
121
+ script,
122
+ keys.length,
123
+ ...prefixedKeys,
124
+ ...args
125
+ );
126
+ return result;
127
+ }
128
+ /**
129
+ * Atomically assigns a nonce using Vana App's battle-tested logic.
130
+ *
131
+ * @remarks
132
+ * This is a Redis-specific optimization that uses a Lua script for
133
+ * atomic nonce assignment with gap prevention. This method is called
134
+ * by DistributedNonceManager when it detects a Redis store.
135
+ *
136
+ * Ported from apps/web/app/api/relay/route.ts (Vana App production code)
137
+ * DO NOT MODIFY without thorough testing in production environment.
138
+ *
139
+ * @param key - The key for storing the last used nonce
140
+ * @param pendingCount - The current pending transaction count from blockchain
141
+ * @returns The assigned nonce
142
+ */
143
+ async atomicAssignNonce(key, pendingCount) {
144
+ const LUA_ASSIGN_NONCE = `
145
+ -- KEYS[1] = lastUsedKey
146
+ -- ARGV[1] = pendingCount (integer)
147
+
148
+ local last = tonumber(redis.call("GET", KEYS[1]) or "-1")
149
+ local pending = tonumber(ARGV[1])
150
+ local candidate = last + 1
151
+ if pending > candidate or (candidate - pending > 500) then
152
+ -- If pending is ahead OR if candidate is too far ahead (>500 nonces), reset to pending
153
+ candidate = pending
154
+ end
155
+
156
+ -- IMPORTANT: Atomically update the last used nonce
157
+ redis.call("SET", KEYS[1], candidate)
158
+
159
+ return candidate
160
+ `;
161
+ const fullKey = `${this.keyPrefix}:${key}`;
162
+ const nonce = await this.redis.eval(
163
+ LUA_ASSIGN_NONCE,
164
+ 1,
165
+ // Number of keys
166
+ fullKey,
167
+ // KEYS[1]
168
+ pendingCount.toString()
169
+ // ARGV[1]
170
+ );
171
+ return nonce;
172
+ }
173
+ }
174
+ export {
175
+ RedisAtomicStore
176
+ };
177
+ //# sourceMappingURL=redisAtomicStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/redisAtomicStore.ts"],"sourcesContent":["/**\n * Redis implementation of IAtomicStore for production use.\n *\n * @remarks\n * This is a Node.js-only implementation that requires the ioredis package.\n * It will not be included in browser bundles.\n *\n * @module\n */\n\nimport type { IAtomicStoreWithNonceSupport } from \"../types/atomicStore\";\n\n/**\n * Configuration for RedisAtomicStore\n */\nexport interface RedisAtomicStoreConfig {\n /** Redis connection URL or ioredis options */\n redis: string | any;\n /** Key prefix for all operations (default: 'vana-sdk:atomic') */\n keyPrefix?: string;\n}\n\n/**\n * Redis-backed implementation of IAtomicStore.\n *\n * @remarks\n * This implementation uses Redis's native atomic operations:\n * - INCR for atomic counter increments\n * - SET NX EX for distributed locking\n * - Lua script for safe lock release\n *\n * Redis is ideal for this use case because:\n * - All operations are atomic by design\n * - Built-in TTL support for automatic cleanup\n * - High performance (sub-millisecond operations)\n * - Battle-tested in production environments\n *\n * @example\n * ```typescript\n * import Redis from 'ioredis';\n * import { RedisAtomicStore } from '@opendatalabs/vana-sdk/node';\n *\n * const redis = new Redis(process.env.REDIS_URL);\n * const atomicStore = new RedisAtomicStore({\n * redis: redis\n * });\n *\n * const vana = Vana({\n * walletClient,\n * atomicStore,\n * operationStore\n * });\n * ```\n *\n * @category Storage\n */\nexport class RedisAtomicStore implements IAtomicStoreWithNonceSupport {\n private redis: any; // ioredis instance\n private keyPrefix: string;\n\n /**\n * Lua script for safe lock release.\n * This ensures we only delete a lock if the value matches our lock ID.\n */\n private readonly UNLOCK_SCRIPT = `\n if redis.call(\"GET\", KEYS[1]) == ARGV[1] then\n return redis.call(\"DEL\", KEYS[1])\n else\n return 0\n end\n `;\n\n constructor(config: RedisAtomicStoreConfig) {\n // Dynamic import to avoid bundling ioredis in browser builds\n // The actual Redis instance should be passed in already created\n if (typeof config.redis === \"string\") {\n throw new Error(\n \"RedisAtomicStore requires an initialized Redis client instance. \" +\n \"Please create the Redis client in your application and pass it to the constructor.\",\n );\n }\n\n this.redis = config.redis;\n this.keyPrefix = config.keyPrefix ?? \"vana-sdk:atomic\";\n\n // Validate that the redis instance has the methods we need\n if (\n !this.redis ||\n typeof this.redis.incr !== \"function\" ||\n typeof this.redis.set !== \"function\" ||\n typeof this.redis.get !== \"function\" ||\n typeof this.redis.eval !== \"function\"\n ) {\n throw new Error(\n \"Invalid Redis client instance provided to RedisAtomicStore\",\n );\n }\n }\n\n /**\n * Atomically increments a counter.\n */\n async incr(key: string): Promise<number> {\n const fullKey = `${this.keyPrefix}:${key}`;\n return await this.redis.incr(fullKey);\n }\n\n /**\n * Acquires a distributed lock using SET NX EX.\n */\n async acquireLock(key: string, ttlSeconds: number): Promise<string | null> {\n const fullKey = `${this.keyPrefix}:${key}`;\n const lockId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;\n\n // SET key value NX EX ttl\n const result = await this.redis.set(\n fullKey,\n lockId,\n \"EX\",\n ttlSeconds,\n \"NX\",\n );\n\n if (result === \"OK\") {\n console.log(`[RedisAtomicStore] Lock acquired: ${key} with ID ${lockId}`);\n return lockId;\n }\n\n return null;\n }\n\n /**\n * Releases a lock using a Lua script for atomicity.\n */\n async releaseLock(key: string, lockId: string): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n\n // Use Lua script for atomic compare-and-delete\n const result = (await this.redis.eval(\n this.UNLOCK_SCRIPT,\n 1, // Number of keys\n fullKey, // KEYS[1]\n lockId, // ARGV[1]\n )) as number;\n\n if (result === 1) {\n console.log(`[RedisAtomicStore] Lock released: ${key}`);\n } else {\n console.warn(\n `[RedisAtomicStore] Lock release failed: ${key} (lock not held or expired)`,\n );\n }\n }\n\n /**\n * Gets a value from Redis.\n */\n async get(key: string): Promise<string | null> {\n const fullKey = `${this.keyPrefix}:${key}`;\n return await this.redis.get(fullKey);\n }\n\n /**\n * Sets a value in Redis.\n */\n async set(key: string, value: string): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n await this.redis.set(fullKey, value);\n }\n\n /**\n * Sets a value with TTL for automatic expiration.\n */\n async setWithTTL?(\n key: string,\n value: string,\n ttlSeconds: number,\n ): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n await this.redis.setex(fullKey, ttlSeconds, value);\n }\n\n /**\n * Deletes a key from Redis.\n */\n async delete?(key: string): Promise<void> {\n const fullKey = `${this.keyPrefix}:${key}`;\n await this.redis.del(fullKey);\n }\n\n /**\n * Executes a Lua script atomically.\n *\n * @remarks\n * This provides generic script execution for complex atomic operations.\n * Keys passed to the script will be automatically prefixed.\n *\n * @param script - The Lua script to execute\n * @param keys - Array of keys (will be prefixed)\n * @param args - Array of arguments\n * @returns The script's return value\n */\n async eval(script: string, keys: string[], args: string[]): Promise<any> {\n // Apply key prefix to all keys\n const prefixedKeys = keys.map((key) => `${this.keyPrefix}:${key}`);\n\n // Execute the Lua script\n const result = await this.redis.eval(\n script,\n keys.length,\n ...prefixedKeys,\n ...args,\n );\n\n return result;\n }\n\n /**\n * Atomically assigns a nonce using Vana App's battle-tested logic.\n *\n * @remarks\n * This is a Redis-specific optimization that uses a Lua script for\n * atomic nonce assignment with gap prevention. This method is called\n * by DistributedNonceManager when it detects a Redis store.\n *\n * Ported from apps/web/app/api/relay/route.ts (Vana App production code)\n * DO NOT MODIFY without thorough testing in production environment.\n *\n * @param key - The key for storing the last used nonce\n * @param pendingCount - The current pending transaction count from blockchain\n * @returns The assigned nonce\n */\n async atomicAssignNonce(key: string, pendingCount: number): Promise<number> {\n const LUA_ASSIGN_NONCE = `\n -- KEYS[1] = lastUsedKey\n -- ARGV[1] = pendingCount (integer)\n\n local last = tonumber(redis.call(\"GET\", KEYS[1]) or \"-1\")\n local pending = tonumber(ARGV[1])\n local candidate = last + 1\n if pending > candidate or (candidate - pending > 500) then\n -- If pending is ahead OR if candidate is too far ahead (>500 nonces), reset to pending\n candidate = pending\n end\n\n -- IMPORTANT: Atomically update the last used nonce\n redis.call(\"SET\", KEYS[1], candidate)\n\n return candidate\n `;\n\n const fullKey = `${this.keyPrefix}:${key}`;\n const nonce = (await this.redis.eval(\n LUA_ASSIGN_NONCE,\n 1, // Number of keys\n fullKey, // KEYS[1]\n pendingCount.toString(), // ARGV[1]\n )) as number;\n\n return nonce;\n }\n}\n"],"mappings":"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","names":[]}