@opendatalabs/vana-sdk 2.2.3 → 3.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 (622) hide show
  1. package/README.md +76 -92
  2. package/dist/auth/errors.cjs +54 -0
  3. package/dist/auth/errors.cjs.map +1 -0
  4. package/dist/auth/errors.d.ts +26 -0
  5. package/dist/auth/errors.js +28 -0
  6. package/dist/auth/errors.js.map +1 -0
  7. package/dist/auth/pkce.cjs +100 -0
  8. package/dist/auth/pkce.cjs.map +1 -0
  9. package/dist/auth/pkce.d.ts +55 -0
  10. package/dist/auth/pkce.js +71 -0
  11. package/dist/auth/pkce.js.map +1 -0
  12. package/dist/auth/token-store.cjs +59 -0
  13. package/dist/auth/token-store.cjs.map +1 -0
  14. package/dist/auth/token-store.d.ts +61 -0
  15. package/dist/auth/token-store.js +35 -0
  16. package/dist/auth/token-store.js.map +1 -0
  17. package/dist/auth/web3-signed-builder.cjs +70 -0
  18. package/dist/auth/web3-signed-builder.cjs.map +1 -0
  19. package/dist/auth/web3-signed-builder.d.ts +47 -0
  20. package/dist/auth/web3-signed-builder.js +45 -0
  21. package/dist/auth/web3-signed-builder.js.map +1 -0
  22. package/dist/auth/web3-signed.cjs +125 -0
  23. package/dist/auth/web3-signed.cjs.map +1 -0
  24. package/dist/auth/web3-signed.d.ts +59 -0
  25. package/dist/auth/web3-signed.js +104 -0
  26. package/dist/auth/web3-signed.js.map +1 -0
  27. package/dist/chains/definitions.cjs +2 -6
  28. package/dist/chains/definitions.cjs.map +1 -1
  29. package/dist/chains/definitions.d.ts +1 -7
  30. package/dist/chains/definitions.js +2 -6
  31. package/dist/chains/definitions.js.map +1 -1
  32. package/dist/config/chains.d.ts +18 -0
  33. package/dist/config/contracts.config.cjs +7 -95
  34. package/dist/config/contracts.config.cjs.map +1 -1
  35. package/dist/config/contracts.config.d.ts +0 -54
  36. package/dist/config/contracts.config.js +6 -93
  37. package/dist/config/contracts.config.js.map +1 -1
  38. package/dist/config/default-services.cjs +0 -10
  39. package/dist/config/default-services.cjs.map +1 -1
  40. package/dist/config/default-services.d.ts +1 -20
  41. package/dist/config/default-services.js +0 -9
  42. package/dist/config/default-services.js.map +1 -1
  43. package/dist/crypto/ecies/interface.cjs +2 -0
  44. package/dist/crypto/ecies/interface.cjs.map +1 -1
  45. package/dist/crypto/ecies/interface.js +2 -0
  46. package/dist/crypto/ecies/interface.js.map +1 -1
  47. package/dist/crypto/envelope/openpgp.cjs +59 -0
  48. package/dist/crypto/envelope/openpgp.cjs.map +1 -0
  49. package/dist/crypto/envelope/openpgp.d.ts +28 -0
  50. package/dist/crypto/envelope/openpgp.js +24 -0
  51. package/dist/crypto/envelope/openpgp.js.map +1 -0
  52. package/dist/crypto/keys/derive.cjs +65 -0
  53. package/dist/crypto/keys/derive.cjs.map +1 -0
  54. package/dist/crypto/keys/derive.d.ts +45 -0
  55. package/dist/crypto/keys/derive.js +38 -0
  56. package/dist/crypto/keys/derive.js.map +1 -0
  57. package/dist/errors.cjs +10 -0
  58. package/dist/errors.cjs.map +1 -1
  59. package/dist/errors.js +10 -0
  60. package/dist/errors.js.map +1 -1
  61. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +65 -0
  62. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -1
  63. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +51 -0
  64. package/dist/generated/abi/VanaPoolEntityImplementation.js +65 -0
  65. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -1
  66. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +187 -19
  67. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -1
  68. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +144 -14
  69. package/dist/generated/abi/VanaPoolStakingImplementation.js +187 -19
  70. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -1
  71. package/dist/generated/abi/index.cjs +2 -37
  72. package/dist/generated/abi/index.cjs.map +1 -1
  73. package/dist/generated/abi/index.d.ts +2687 -9119
  74. package/dist/generated/abi/index.js +2 -29
  75. package/dist/generated/abi/index.js.map +1 -1
  76. package/dist/generated/addresses.cjs +5 -107
  77. package/dist/generated/addresses.cjs.map +1 -1
  78. package/dist/generated/addresses.d.ts +5 -99
  79. package/dist/generated/addresses.js +5 -105
  80. package/dist/generated/addresses.js.map +1 -1
  81. package/dist/index.browser.d.ts +23 -138
  82. package/dist/index.browser.js +32090 -112
  83. package/dist/index.browser.js.map +7 -1
  84. package/dist/index.node.cjs +32809 -157
  85. package/dist/index.node.cjs.map +7 -1
  86. package/dist/index.node.d.ts +22 -208
  87. package/dist/index.node.js +32716 -131
  88. package/dist/index.node.js.map +7 -1
  89. package/dist/protocol/data-file.cjs +56 -0
  90. package/dist/protocol/data-file.cjs.map +1 -0
  91. package/dist/protocol/data-file.d.ts +20 -0
  92. package/dist/protocol/data-file.js +30 -0
  93. package/dist/protocol/data-file.js.map +1 -0
  94. package/dist/protocol/eip712.cjs +123 -0
  95. package/dist/protocol/eip712.cjs.map +1 -0
  96. package/dist/protocol/eip712.d.ts +117 -0
  97. package/dist/protocol/eip712.js +90 -0
  98. package/dist/protocol/eip712.js.map +1 -0
  99. package/dist/protocol/gateway.cjs +226 -0
  100. package/dist/protocol/gateway.cjs.map +1 -0
  101. package/dist/protocol/gateway.d.ts +120 -0
  102. package/dist/protocol/gateway.js +202 -0
  103. package/dist/protocol/gateway.js.map +1 -0
  104. package/dist/protocol/scopes.cjs +78 -0
  105. package/dist/protocol/scopes.cjs.map +1 -0
  106. package/dist/protocol/scopes.d.ts +13 -0
  107. package/dist/protocol/scopes.js +50 -0
  108. package/dist/protocol/scopes.js.map +1 -0
  109. package/dist/{types/atomicStore.cjs → storage/default.cjs} +9 -8
  110. package/dist/storage/default.cjs.map +1 -0
  111. package/dist/storage/default.d.ts +4 -0
  112. package/dist/storage/default.js +8 -0
  113. package/dist/storage/default.js.map +1 -0
  114. package/dist/storage/index.cjs +11 -2
  115. package/dist/storage/index.cjs.map +1 -1
  116. package/dist/storage/index.d.ts +9 -0
  117. package/dist/storage/index.js +7 -1
  118. package/dist/storage/index.js.map +1 -1
  119. package/dist/storage/providers/callback-storage.cjs +1 -0
  120. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  121. package/dist/storage/providers/callback-storage.js +1 -0
  122. package/dist/storage/providers/callback-storage.js.map +1 -1
  123. package/dist/storage/providers/dropbox.cjs +1 -0
  124. package/dist/storage/providers/dropbox.cjs.map +1 -1
  125. package/dist/storage/providers/dropbox.js +1 -0
  126. package/dist/storage/providers/dropbox.js.map +1 -1
  127. package/dist/storage/providers/google-drive.cjs +1 -0
  128. package/dist/storage/providers/google-drive.cjs.map +1 -1
  129. package/dist/storage/providers/google-drive.js +1 -0
  130. package/dist/storage/providers/google-drive.js.map +1 -1
  131. package/dist/storage/providers/ipfs.cjs +1 -0
  132. package/dist/storage/providers/ipfs.cjs.map +1 -1
  133. package/dist/storage/providers/ipfs.js +1 -0
  134. package/dist/storage/providers/ipfs.js.map +1 -1
  135. package/dist/storage/providers/pinata.cjs +1 -0
  136. package/dist/storage/providers/pinata.cjs.map +1 -1
  137. package/dist/storage/providers/pinata.js +1 -0
  138. package/dist/storage/providers/pinata.js.map +1 -1
  139. package/dist/storage/providers/r2.cjs +376 -0
  140. package/dist/storage/providers/r2.cjs.map +1 -0
  141. package/dist/storage/providers/r2.d.ts +91 -0
  142. package/dist/storage/providers/r2.js +354 -0
  143. package/dist/storage/providers/r2.js.map +1 -0
  144. package/dist/storage/providers/vana-storage.cjs +251 -0
  145. package/dist/storage/providers/vana-storage.cjs.map +1 -0
  146. package/dist/storage/providers/vana-storage.d.ts +100 -0
  147. package/dist/storage/providers/vana-storage.js +231 -0
  148. package/dist/storage/providers/vana-storage.js.map +1 -0
  149. package/dist/types/config.cjs +0 -34
  150. package/dist/types/config.cjs.map +1 -1
  151. package/dist/types/config.d.ts +1 -607
  152. package/dist/types/config.js +0 -22
  153. package/dist/types/config.js.map +1 -1
  154. package/dist/types/contracts.cjs.map +1 -1
  155. package/dist/types/contracts.d.ts +1 -1
  156. package/dist/types/index.cjs +2 -33
  157. package/dist/types/index.cjs.map +1 -1
  158. package/dist/types/index.d.ts +2 -33
  159. package/dist/types/index.js +1 -35
  160. package/dist/types/index.js.map +1 -1
  161. package/dist/types/ps-errors.cjs +66 -0
  162. package/dist/types/ps-errors.cjs.map +1 -0
  163. package/dist/types/ps-errors.d.ts +25 -0
  164. package/dist/types/ps-errors.js +41 -0
  165. package/dist/types/ps-errors.js.map +1 -0
  166. package/dist/types.cjs.map +1 -1
  167. package/dist/types.d.ts +0 -29
  168. package/dist/types.js.map +1 -1
  169. package/package.json +7 -25
  170. package/dist/client/enhancedResponse.cjs +0 -164
  171. package/dist/client/enhancedResponse.cjs.map +0 -1
  172. package/dist/client/enhancedResponse.d.ts +0 -120
  173. package/dist/client/enhancedResponse.js +0 -138
  174. package/dist/client/enhancedResponse.js.map +0 -1
  175. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +0 -7
  176. package/dist/controllers/base.cjs +0 -116
  177. package/dist/controllers/base.cjs.map +0 -1
  178. package/dist/controllers/base.d.ts +0 -94
  179. package/dist/controllers/base.js +0 -92
  180. package/dist/controllers/base.js.map +0 -1
  181. package/dist/controllers/data.cjs +0 -2633
  182. package/dist/controllers/data.cjs.map +0 -1
  183. package/dist/controllers/data.d.ts +0 -1067
  184. package/dist/controllers/data.js +0 -2626
  185. package/dist/controllers/data.js.map +0 -1
  186. package/dist/controllers/operations.cjs +0 -430
  187. package/dist/controllers/operations.cjs.map +0 -1
  188. package/dist/controllers/operations.d.ts +0 -229
  189. package/dist/controllers/operations.js +0 -406
  190. package/dist/controllers/operations.js.map +0 -1
  191. package/dist/controllers/permissions.cjs +0 -4368
  192. package/dist/controllers/permissions.cjs.map +0 -1
  193. package/dist/controllers/permissions.d.ts +0 -1411
  194. package/dist/controllers/permissions.js +0 -4344
  195. package/dist/controllers/permissions.js.map +0 -1
  196. package/dist/controllers/protocol.cjs +0 -183
  197. package/dist/controllers/protocol.cjs.map +0 -1
  198. package/dist/controllers/protocol.d.ts +0 -138
  199. package/dist/controllers/protocol.js +0 -163
  200. package/dist/controllers/protocol.js.map +0 -1
  201. package/dist/controllers/schemas.cjs +0 -678
  202. package/dist/controllers/schemas.cjs.map +0 -1
  203. package/dist/controllers/schemas.d.ts +0 -293
  204. package/dist/controllers/schemas.js +0 -654
  205. package/dist/controllers/schemas.js.map +0 -1
  206. package/dist/controllers/server.cjs +0 -643
  207. package/dist/controllers/server.cjs.map +0 -1
  208. package/dist/controllers/server.d.ts +0 -322
  209. package/dist/controllers/server.js +0 -624
  210. package/dist/controllers/server.js.map +0 -1
  211. package/dist/core/__tests__/pollingManager.test.d.ts +0 -4
  212. package/dist/core/apiClient.cjs +0 -378
  213. package/dist/core/apiClient.cjs.map +0 -1
  214. package/dist/core/apiClient.d.ts +0 -286
  215. package/dist/core/apiClient.js +0 -359
  216. package/dist/core/apiClient.js.map +0 -1
  217. package/dist/core/generics.cjs +0 -417
  218. package/dist/core/generics.cjs.map +0 -1
  219. package/dist/core/generics.d.ts +0 -205
  220. package/dist/core/generics.js +0 -386
  221. package/dist/core/generics.js.map +0 -1
  222. package/dist/core/health.cjs +0 -289
  223. package/dist/core/health.cjs.map +0 -1
  224. package/dist/core/health.d.ts +0 -143
  225. package/dist/core/health.js +0 -265
  226. package/dist/core/health.js.map +0 -1
  227. package/dist/core/inMemoryNonceManager.cjs +0 -138
  228. package/dist/core/inMemoryNonceManager.cjs.map +0 -1
  229. package/dist/core/inMemoryNonceManager.d.ts +0 -69
  230. package/dist/core/inMemoryNonceManager.js +0 -114
  231. package/dist/core/inMemoryNonceManager.js.map +0 -1
  232. package/dist/core/nonceManager.cjs +0 -304
  233. package/dist/core/nonceManager.cjs.map +0 -1
  234. package/dist/core/nonceManager.d.ts +0 -116
  235. package/dist/core/nonceManager.js +0 -280
  236. package/dist/core/nonceManager.js.map +0 -1
  237. package/dist/core/pollingManager.cjs +0 -292
  238. package/dist/core/pollingManager.cjs.map +0 -1
  239. package/dist/core/pollingManager.d.ts +0 -120
  240. package/dist/core/pollingManager.js +0 -268
  241. package/dist/core/pollingManager.js.map +0 -1
  242. package/dist/core.cjs +0 -777
  243. package/dist/core.cjs.map +0 -1
  244. package/dist/core.d.ts +0 -493
  245. package/dist/core.js +0 -752
  246. package/dist/core.js.map +0 -1
  247. package/dist/diagnostics.cjs +0 -37
  248. package/dist/diagnostics.cjs.map +0 -1
  249. package/dist/diagnostics.d.ts +0 -24
  250. package/dist/diagnostics.js +0 -13
  251. package/dist/diagnostics.js.map +0 -1
  252. package/dist/diagnostics.test.d.ts +0 -1
  253. package/dist/generated/abi/DLPPerformanceImplementation.cjs +0 -1202
  254. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +0 -1
  255. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +0 -914
  256. package/dist/generated/abi/DLPPerformanceImplementation.js +0 -1178
  257. package/dist/generated/abi/DLPPerformanceImplementation.js.map +0 -1
  258. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +0 -1112
  259. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +0 -1
  260. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +0 -840
  261. package/dist/generated/abi/DLPRewardDeployerImplementation.js +0 -1088
  262. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +0 -1
  263. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +0 -612
  264. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +0 -1
  265. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +0 -451
  266. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +0 -588
  267. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +0 -1
  268. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +0 -939
  269. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +0 -1
  270. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +0 -705
  271. package/dist/generated/abi/DLPRewardSwapImplementation.js +0 -915
  272. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +0 -1
  273. package/dist/generated/abi/DLPRootImplementation.cjs +0 -1644
  274. package/dist/generated/abi/DLPRootImplementation.cjs.map +0 -1
  275. package/dist/generated/abi/DLPRootImplementation.d.ts +0 -1246
  276. package/dist/generated/abi/DLPRootImplementation.js +0 -1620
  277. package/dist/generated/abi/DLPRootImplementation.js.map +0 -1
  278. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +0 -985
  279. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +0 -1
  280. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +0 -735
  281. package/dist/generated/abi/DataLiquidityPoolImplementation.js +0 -961
  282. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +0 -1
  283. package/dist/generated/abi/SwapHelperImplementation.cjs +0 -976
  284. package/dist/generated/abi/SwapHelperImplementation.cjs.map +0 -1
  285. package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -728
  286. package/dist/generated/abi/SwapHelperImplementation.js +0 -952
  287. package/dist/generated/abi/SwapHelperImplementation.js.map +0 -1
  288. package/dist/generated/abi/TeePoolImplementation.cjs +0 -1313
  289. package/dist/generated/abi/TeePoolImplementation.cjs.map +0 -1
  290. package/dist/generated/abi/TeePoolImplementation.d.ts +0 -992
  291. package/dist/generated/abi/TeePoolImplementation.js +0 -1289
  292. package/dist/generated/abi/TeePoolImplementation.js.map +0 -1
  293. package/dist/generated/event-types.cjs +0 -17
  294. package/dist/generated/event-types.cjs.map +0 -1
  295. package/dist/generated/event-types.d.ts +0 -809
  296. package/dist/generated/event-types.js +0 -1
  297. package/dist/generated/event-types.js.map +0 -1
  298. package/dist/generated/eventRegistry.cjs +0 -4470
  299. package/dist/generated/eventRegistry.cjs.map +0 -1
  300. package/dist/generated/eventRegistry.d.ts +0 -14
  301. package/dist/generated/eventRegistry.js +0 -4445
  302. package/dist/generated/eventRegistry.js.map +0 -1
  303. package/dist/generated/server/server-exports.cjs +0 -45
  304. package/dist/generated/server/server-exports.cjs.map +0 -1
  305. package/dist/generated/server/server-exports.d.ts +0 -36
  306. package/dist/generated/server/server-exports.js +0 -19
  307. package/dist/generated/server/server-exports.js.map +0 -1
  308. package/dist/generated/server/server.cjs +0 -17
  309. package/dist/generated/server/server.cjs.map +0 -1
  310. package/dist/generated/server/server.d.ts +0 -907
  311. package/dist/generated/server/server.js +0 -1
  312. package/dist/generated/server/server.js.map +0 -1
  313. package/dist/generated/subgraph.cjs +0 -1440
  314. package/dist/generated/subgraph.cjs.map +0 -1
  315. package/dist/generated/subgraph.d.ts +0 -6113
  316. package/dist/generated/subgraph.js +0 -1404
  317. package/dist/generated/subgraph.js.map +0 -1
  318. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +0 -1
  319. package/dist/lib/redisAtomicStore.cjs +0 -201
  320. package/dist/lib/redisAtomicStore.cjs.map +0 -1
  321. package/dist/lib/redisAtomicStore.d.ts +0 -120
  322. package/dist/lib/redisAtomicStore.js +0 -177
  323. package/dist/lib/redisAtomicStore.js.map +0 -1
  324. package/dist/server/relayerHandler.cjs +0 -452
  325. package/dist/server/relayerHandler.cjs.map +0 -1
  326. package/dist/server/relayerHandler.d.ts +0 -69
  327. package/dist/server/relayerHandler.js +0 -428
  328. package/dist/server/relayerHandler.js.map +0 -1
  329. package/dist/tests/abi.test.d.ts +0 -1
  330. package/dist/tests/chains-definitions.test.d.ts +0 -1
  331. package/dist/tests/core-encryption.test.d.ts +0 -1
  332. package/dist/tests/core-extended.test.d.ts +0 -1
  333. package/dist/tests/core-generics-coverage.test.d.ts +0 -1
  334. package/dist/tests/coverage-boost.test.d.ts +0 -1
  335. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +0 -1
  336. package/dist/tests/data-addfile-permissions-schema.test.d.ts +0 -1
  337. package/dist/tests/data-additional-methods.test.d.ts +0 -1
  338. package/dist/tests/data-controller-edge-cases.test.d.ts +0 -1
  339. package/dist/tests/data-ipfs-gateways.test.d.ts +0 -1
  340. package/dist/tests/data-relayer.test.d.ts +0 -1
  341. package/dist/tests/data-schema-validation.test.d.ts +0 -1
  342. package/dist/tests/data-simple-methods.test.d.ts +0 -1
  343. package/dist/tests/data-upload-owner-validation.test.d.ts +0 -1
  344. package/dist/tests/data.test.d.ts +0 -1
  345. package/dist/tests/demo-integration.test.d.ts +0 -1
  346. package/dist/tests/demo-trusted-server-integration.test.d.ts +0 -1
  347. package/dist/tests/download-relayer.test.d.ts +0 -1
  348. package/dist/tests/dual-mode-permissions.test.d.ts +0 -1
  349. package/dist/tests/dual-mode-trusted-servers.test.d.ts +0 -1
  350. package/dist/tests/encryption-correct-implementation.test.d.ts +0 -1
  351. package/dist/tests/encryption-coverage.test.d.ts +0 -1
  352. package/dist/tests/encryption-edge-cases.test.d.ts +0 -1
  353. package/dist/tests/encryption-utils-updated.test.d.ts +0 -1
  354. package/dist/tests/errors-coverage.test.d.ts +0 -1
  355. package/dist/tests/factories/mockFactory.d.ts +0 -316
  356. package/dist/tests/fakes/FakeStorageManager.d.ts +0 -200
  357. package/dist/tests/fakes/FakeStorageManager.test.d.ts +0 -1
  358. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +0 -170
  359. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +0 -1
  360. package/dist/tests/fakes/fake-pgp-port.d.ts +0 -13
  361. package/dist/tests/grantValidation-edge-cases.test.d.ts +0 -1
  362. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +0 -1
  363. package/dist/tests/helper-methods.test.d.ts +0 -1
  364. package/dist/tests/helpers/typedMocks.d.ts +0 -64
  365. package/dist/tests/index-browser.test.d.ts +0 -1
  366. package/dist/tests/index-node.test.d.ts +0 -1
  367. package/dist/tests/index.test.d.ts +0 -1
  368. package/dist/tests/mocks/platformAdapter.d.ts +0 -12
  369. package/dist/tests/new-permissions-methods.test.d.ts +0 -1
  370. package/dist/tests/no-buffer-browser.test.d.ts +0 -1
  371. package/dist/tests/permissions-grantee.test.d.ts +0 -1
  372. package/dist/tests/permissions-revoke-relayer.test.d.ts +0 -1
  373. package/dist/tests/permissions-schema-validation.test.d.ts +0 -1
  374. package/dist/tests/permissions-server-files.test.d.ts +0 -1
  375. package/dist/tests/permissions-transaction-options.test.d.ts +0 -1
  376. package/dist/tests/permissions-trust-servers.test.d.ts +0 -1
  377. package/dist/tests/permissions.test.d.ts +0 -1
  378. package/dist/tests/personal.test.d.ts +0 -1
  379. package/dist/tests/platform-browser.test.d.ts +0 -1
  380. package/dist/tests/platform-crypto-expanded.test.d.ts +0 -1
  381. package/dist/tests/platform-crypto.test.d.ts +0 -1
  382. package/dist/tests/platform-index.test.d.ts +0 -1
  383. package/dist/tests/platform-node.test.d.ts +0 -1
  384. package/dist/tests/platform-shared-utils.test.d.ts +0 -1
  385. package/dist/tests/platform-updated.test.d.ts +0 -1
  386. package/dist/tests/protocol-additional-methods.test.d.ts +0 -1
  387. package/dist/tests/protocol.test.d.ts +0 -1
  388. package/dist/tests/read-only-mode.test.d.ts +0 -1
  389. package/dist/tests/relayer-integration.test.d.ts +0 -1
  390. package/dist/tests/relayer-unified.test.d.ts +0 -1
  391. package/dist/tests/schemas.test.d.ts +0 -1
  392. package/dist/tests/server-relayer-handler.test.d.ts +0 -1
  393. package/dist/tests/signatureFormatter.test.d.ts +0 -1
  394. package/dist/tests/trusted-server-queries.test.d.ts +0 -1
  395. package/dist/tests/typedDataConverter.test.d.ts +0 -1
  396. package/dist/tests/types-contracts.test.d.ts +0 -1
  397. package/dist/tests/types-data.test.d.ts +0 -1
  398. package/dist/tests/types-external-apis.test.d.ts +0 -1
  399. package/dist/tests/types-generics.test.d.ts +0 -1
  400. package/dist/tests/types-permissions.test.d.ts +0 -1
  401. package/dist/tests/types-upload-params.test.d.ts +0 -1
  402. package/dist/tests/types.test.d.ts +0 -1
  403. package/dist/tests/utils-formatters.test.d.ts +0 -1
  404. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +0 -1
  405. package/dist/tests/utils-grantFiles-validation.test.d.ts +0 -1
  406. package/dist/tests/utils-grantFiles.test.d.ts +0 -1
  407. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +0 -1
  408. package/dist/tests/utils-grants.test.d.ts +0 -1
  409. package/dist/tests/utils-ipfs-additional.test.d.ts +0 -1
  410. package/dist/tests/utils-ipfs.test.d.ts +0 -4
  411. package/dist/tests/utils-schemaValidation.test.d.ts +0 -1
  412. package/dist/tests/vana.test.d.ts +0 -1
  413. package/dist/tests/wallet-crypto-compatibility.test.d.ts +0 -1
  414. package/dist/types/atomicStore.cjs.map +0 -1
  415. package/dist/types/atomicStore.d.ts +0 -236
  416. package/dist/types/atomicStore.js +0 -7
  417. package/dist/types/atomicStore.js.map +0 -1
  418. package/dist/types/blockchain.cjs +0 -17
  419. package/dist/types/blockchain.cjs.map +0 -1
  420. package/dist/types/blockchain.d.ts +0 -85
  421. package/dist/types/blockchain.js +0 -1
  422. package/dist/types/blockchain.js.map +0 -1
  423. package/dist/types/controller-context.cjs +0 -17
  424. package/dist/types/controller-context.cjs.map +0 -1
  425. package/dist/types/controller-context.d.ts +0 -68
  426. package/dist/types/controller-context.js +0 -1
  427. package/dist/types/controller-context.js.map +0 -1
  428. package/dist/types/data.cjs +0 -17
  429. package/dist/types/data.cjs.map +0 -1
  430. package/dist/types/data.d.ts +0 -763
  431. package/dist/types/data.js +0 -1
  432. package/dist/types/data.js.map +0 -1
  433. package/dist/types/external-apis.cjs +0 -61
  434. package/dist/types/external-apis.cjs.map +0 -1
  435. package/dist/types/external-apis.d.ts +0 -184
  436. package/dist/types/external-apis.js +0 -34
  437. package/dist/types/external-apis.js.map +0 -1
  438. package/dist/types/generics.cjs +0 -17
  439. package/dist/types/generics.cjs.map +0 -1
  440. package/dist/types/generics.d.ts +0 -518
  441. package/dist/types/generics.js +0 -1
  442. package/dist/types/generics.js.map +0 -1
  443. package/dist/types/operationStore.cjs +0 -17
  444. package/dist/types/operationStore.cjs.map +0 -1
  445. package/dist/types/operationStore.d.ts +0 -171
  446. package/dist/types/operationStore.js +0 -1
  447. package/dist/types/operationStore.js.map +0 -1
  448. package/dist/types/operations.cjs +0 -53
  449. package/dist/types/operations.cjs.map +0 -1
  450. package/dist/types/operations.d.ts +0 -204
  451. package/dist/types/operations.js +0 -26
  452. package/dist/types/operations.js.map +0 -1
  453. package/dist/types/options.cjs +0 -17
  454. package/dist/types/options.cjs.map +0 -1
  455. package/dist/types/options.d.ts +0 -308
  456. package/dist/types/options.js +0 -1
  457. package/dist/types/options.js.map +0 -1
  458. package/dist/types/permissions.cjs +0 -17
  459. package/dist/types/permissions.cjs.map +0 -1
  460. package/dist/types/permissions.d.ts +0 -955
  461. package/dist/types/permissions.js +0 -1
  462. package/dist/types/permissions.js.map +0 -1
  463. package/dist/types/personal.cjs +0 -17
  464. package/dist/types/personal.cjs.map +0 -1
  465. package/dist/types/personal.d.ts +0 -174
  466. package/dist/types/personal.js +0 -1
  467. package/dist/types/personal.js.map +0 -1
  468. package/dist/types/relayer.cjs +0 -17
  469. package/dist/types/relayer.cjs.map +0 -1
  470. package/dist/types/relayer.d.ts +0 -552
  471. package/dist/types/relayer.js +0 -1
  472. package/dist/types/relayer.js.map +0 -1
  473. package/dist/types/transactionResults.cjs +0 -17
  474. package/dist/types/transactionResults.cjs.map +0 -1
  475. package/dist/types/transactionResults.d.ts +0 -193
  476. package/dist/types/transactionResults.js +0 -1
  477. package/dist/types/transactionResults.js.map +0 -1
  478. package/dist/types/utils.cjs +0 -17
  479. package/dist/types/utils.cjs.map +0 -1
  480. package/dist/types/utils.d.ts +0 -771
  481. package/dist/types/utils.js +0 -1
  482. package/dist/types/utils.js.map +0 -1
  483. package/dist/utils/__tests__/chainQuery.test.d.ts +0 -1
  484. package/dist/utils/__tests__/parseTransaction.test.d.ts +0 -1
  485. package/dist/utils/__tests__/pojo-serialization.test.d.ts +0 -1
  486. package/dist/utils/__tests__/signatureCache.test.d.ts +0 -1
  487. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +0 -4
  488. package/dist/utils/__tests__/subgraphPagination.test.d.ts +0 -4
  489. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +0 -1
  490. package/dist/utils/__tests__/transactionHelpers.test.d.ts +0 -1
  491. package/dist/utils/__tests__/urlResolver.test.d.ts +0 -4
  492. package/dist/utils/blockchain/registry.cjs +0 -81
  493. package/dist/utils/blockchain/registry.cjs.map +0 -1
  494. package/dist/utils/blockchain/registry.d.ts +0 -32
  495. package/dist/utils/blockchain/registry.js +0 -56
  496. package/dist/utils/blockchain/registry.js.map +0 -1
  497. package/dist/utils/blockchain/registry.test.d.ts +0 -1
  498. package/dist/utils/chainQuery.cjs +0 -107
  499. package/dist/utils/chainQuery.cjs.map +0 -1
  500. package/dist/utils/chainQuery.d.ts +0 -31
  501. package/dist/utils/chainQuery.js +0 -82
  502. package/dist/utils/chainQuery.js.map +0 -1
  503. package/dist/utils/download.cjs +0 -69
  504. package/dist/utils/download.cjs.map +0 -1
  505. package/dist/utils/download.d.ts +0 -40
  506. package/dist/utils/download.js +0 -45
  507. package/dist/utils/download.js.map +0 -1
  508. package/dist/utils/encryption.cjs +0 -176
  509. package/dist/utils/encryption.cjs.map +0 -1
  510. package/dist/utils/encryption.d.ts +0 -271
  511. package/dist/utils/encryption.js +0 -142
  512. package/dist/utils/encryption.js.map +0 -1
  513. package/dist/utils/formatters.cjs +0 -55
  514. package/dist/utils/formatters.cjs.map +0 -1
  515. package/dist/utils/formatters.d.ts +0 -118
  516. package/dist/utils/formatters.js +0 -28
  517. package/dist/utils/formatters.js.map +0 -1
  518. package/dist/utils/grantFiles.cjs +0 -181
  519. package/dist/utils/grantFiles.cjs.map +0 -1
  520. package/dist/utils/grantFiles.d.ts +0 -172
  521. package/dist/utils/grantFiles.js +0 -143
  522. package/dist/utils/grantFiles.js.map +0 -1
  523. package/dist/utils/grantValidation.cjs +0 -243
  524. package/dist/utils/grantValidation.cjs.map +0 -1
  525. package/dist/utils/grantValidation.d.ts +0 -226
  526. package/dist/utils/grantValidation.js +0 -201
  527. package/dist/utils/grantValidation.js.map +0 -1
  528. package/dist/utils/grants.cjs +0 -108
  529. package/dist/utils/grants.cjs.map +0 -1
  530. package/dist/utils/grants.d.ts +0 -148
  531. package/dist/utils/grants.js +0 -82
  532. package/dist/utils/grants.js.map +0 -1
  533. package/dist/utils/ipfs.cjs +0 -128
  534. package/dist/utils/ipfs.cjs.map +0 -1
  535. package/dist/utils/ipfs.d.ts +0 -88
  536. package/dist/utils/ipfs.js +0 -97
  537. package/dist/utils/ipfs.js.map +0 -1
  538. package/dist/utils/multicall.cjs +0 -233
  539. package/dist/utils/multicall.cjs.map +0 -1
  540. package/dist/utils/multicall.d.ts +0 -126
  541. package/dist/utils/multicall.js +0 -208
  542. package/dist/utils/multicall.js.map +0 -1
  543. package/dist/utils/parseTransactionPojo.cjs +0 -87
  544. package/dist/utils/parseTransactionPojo.cjs.map +0 -1
  545. package/dist/utils/parseTransactionPojo.d.ts +0 -31
  546. package/dist/utils/parseTransactionPojo.js +0 -63
  547. package/dist/utils/parseTransactionPojo.js.map +0 -1
  548. package/dist/utils/schemaValidation.cjs +0 -258
  549. package/dist/utils/schemaValidation.cjs.map +0 -1
  550. package/dist/utils/schemaValidation.d.ts +0 -168
  551. package/dist/utils/schemaValidation.js +0 -219
  552. package/dist/utils/schemaValidation.js.map +0 -1
  553. package/dist/utils/signatureCache.cjs +0 -192
  554. package/dist/utils/signatureCache.cjs.map +0 -1
  555. package/dist/utils/signatureCache.d.ts +0 -172
  556. package/dist/utils/signatureCache.js +0 -167
  557. package/dist/utils/signatureCache.js.map +0 -1
  558. package/dist/utils/signatureFormatter.cjs +0 -42
  559. package/dist/utils/signatureFormatter.cjs.map +0 -1
  560. package/dist/utils/signatureFormatter.d.ts +0 -36
  561. package/dist/utils/signatureFormatter.js +0 -18
  562. package/dist/utils/signatureFormatter.js.map +0 -1
  563. package/dist/utils/subgraphConsistency.cjs +0 -184
  564. package/dist/utils/subgraphConsistency.cjs.map +0 -1
  565. package/dist/utils/subgraphConsistency.d.ts +0 -65
  566. package/dist/utils/subgraphConsistency.js +0 -155
  567. package/dist/utils/subgraphConsistency.js.map +0 -1
  568. package/dist/utils/subgraphMetaCache.cjs +0 -101
  569. package/dist/utils/subgraphMetaCache.cjs.map +0 -1
  570. package/dist/utils/subgraphMetaCache.d.ts +0 -56
  571. package/dist/utils/subgraphMetaCache.js +0 -76
  572. package/dist/utils/subgraphMetaCache.js.map +0 -1
  573. package/dist/utils/subgraphPagination.cjs +0 -104
  574. package/dist/utils/subgraphPagination.cjs.map +0 -1
  575. package/dist/utils/subgraphPagination.d.ts +0 -78
  576. package/dist/utils/subgraphPagination.js +0 -78
  577. package/dist/utils/subgraphPagination.js.map +0 -1
  578. package/dist/utils/tests/multicall.test.d.ts +0 -1
  579. package/dist/utils/transactionHelpers.cjs +0 -54
  580. package/dist/utils/transactionHelpers.cjs.map +0 -1
  581. package/dist/utils/transactionHelpers.d.ts +0 -80
  582. package/dist/utils/transactionHelpers.js +0 -29
  583. package/dist/utils/transactionHelpers.js.map +0 -1
  584. package/dist/utils/typeGuards.cjs +0 -109
  585. package/dist/utils/typeGuards.cjs.map +0 -1
  586. package/dist/utils/typeGuards.d.ts +0 -138
  587. package/dist/utils/typeGuards.js +0 -74
  588. package/dist/utils/typeGuards.js.map +0 -1
  589. package/dist/utils/typedDataConverter.cjs +0 -43
  590. package/dist/utils/typedDataConverter.cjs.map +0 -1
  591. package/dist/utils/typedDataConverter.d.ts +0 -46
  592. package/dist/utils/typedDataConverter.js +0 -19
  593. package/dist/utils/typedDataConverter.js.map +0 -1
  594. package/dist/utils/urlResolver.cjs +0 -62
  595. package/dist/utils/urlResolver.cjs.map +0 -1
  596. package/dist/utils/urlResolver.d.ts +0 -56
  597. package/dist/utils/urlResolver.js +0 -37
  598. package/dist/utils/urlResolver.js.map +0 -1
  599. package/dist/utils/wallet.cjs +0 -63
  600. package/dist/utils/wallet.cjs.map +0 -1
  601. package/dist/utils/wallet.d.ts +0 -94
  602. package/dist/utils/wallet.js +0 -37
  603. package/dist/utils/wallet.js.map +0 -1
  604. package/dist/utils/withEvents.cjs +0 -44
  605. package/dist/utils/withEvents.cjs.map +0 -1
  606. package/dist/utils/withEvents.d.ts +0 -56
  607. package/dist/utils/withEvents.js +0 -18
  608. package/dist/utils/withEvents.js.map +0 -1
  609. /package/dist/{__tests__/waitForTransactionEvents.test.d.ts → auth/pkce.test.d.ts} +0 -0
  610. /package/dist/{client/__tests__/enhancedResponse.test.d.ts → auth/token-store.test.d.ts} +0 -0
  611. /package/dist/{controllers/__tests__/operations.processQueue.test.d.ts → auth/web3-signed.test.d.ts} +0 -0
  612. /package/dist/{controllers/__tests__/schemas-edge-cases.test.d.ts → crypto/envelope/openpgp.test.d.ts} +0 -0
  613. /package/dist/{controllers/data-error-handling.test.d.ts → crypto/keys/derive.test.d.ts} +0 -0
  614. /package/dist/{tests/errors.test.d.ts → errors.test.d.ts} +0 -0
  615. /package/dist/{controllers/server-additional.test.d.ts → protocol/data-file.test.d.ts} +0 -0
  616. /package/dist/{core/__tests__/health.test.d.ts → protocol/eip712.test.d.ts} +0 -0
  617. /package/dist/{core/__tests__/inMemoryNonceManager.test.d.ts → protocol/gateway.test.d.ts} +0 -0
  618. /package/dist/{core/__tests__/nonceManager.test.d.ts → protocol/scopes.test.d.ts} +0 -0
  619. /package/dist/{core/core.test.d.ts → storage/tests/defaultStorage.test.d.ts} +0 -0
  620. /package/dist/{core/tests/apiClient.test.d.ts → storage/tests/r2Storage.test.d.ts} +0 -0
  621. /package/dist/{core/tests/client.test.d.ts → storage/tests/vanaStorage.test.d.ts} +0 -0
  622. /package/dist/{core/tests/generics.test.d.ts → types/ps-errors.test.d.ts} +0 -0
@@ -1,229 +0,0 @@
1
- /**
2
- * Operations controller for managing and recovering asynchronous relayer operations.
3
- *
4
- * @module
5
- */
6
- import type { ControllerContext } from "./permissions";
7
- import type { OperationStatus } from "../types/options";
8
- import type { IOperationStore } from "../types/operationStore";
9
- import type { IAtomicStore } from "../types/atomicStore";
10
- import type { WalletClient, PublicClient } from "viem";
11
- import { BaseController } from "./base";
12
- /**
13
- * Controller for managing asynchronous operations.
14
- *
15
- * This controller provides methods to check the status of pending operations
16
- * and recover from interrupted transactions.
17
- *
18
- * @category Controllers
19
- * @example
20
- * ```typescript
21
- * // Recover an orphaned operation
22
- * try {
23
- * const result = await vana.permissions.grant(...);
24
- * } catch (error) {
25
- * if (error instanceof TransactionPendingError) {
26
- * // Save the operation ID
27
- * localStorage.setItem('pendingOp', error.operationId);
28
- *
29
- * // Later, check the status
30
- * const operationId = localStorage.getItem('pendingOp');
31
- * const status = await vana.operations.getStatus(operationId);
32
- *
33
- * if (status.type === 'confirmed') {
34
- * console.log('Transaction confirmed:', status.receipt);
35
- * }
36
- * }
37
- * }
38
- * ```
39
- */
40
- export declare class OperationsController extends BaseController {
41
- constructor(context: ControllerContext);
42
- /**
43
- * Gets the current status of an operation.
44
- *
45
- * @remarks
46
- * This method allows recovery of operations that were interrupted due to:
47
- * - Browser tab closure
48
- * - Network disconnection
49
- * - Application errors
50
- * - Timeout during polling
51
- *
52
- * The method queries the backend for the current operation state without
53
- * starting a new polling session.
54
- *
55
- * @param operationId - The unique identifier of the operation to check
56
- * @returns Promise resolving to the current operation status
57
- * @throws {Error} When relayer is not configured
58
- * @throws {Error} When operation is not found
59
- *
60
- * @example
61
- * ```typescript
62
- * const status = await vana.operations.getStatus('550e8400-e29b-41d4-a716-446655440000');
63
- *
64
- * switch(status.type) {
65
- * case 'pending':
66
- * console.log('Still processing...');
67
- * break;
68
- * case 'queued':
69
- * console.log(`Position in queue: ${status.position}`);
70
- * break;
71
- * case 'confirmed':
72
- * console.log(`Transaction confirmed: ${status.receipt.transactionHash}`);
73
- * break;
74
- * case 'failed':
75
- * console.error(`Operation failed: ${status.error}`);
76
- * break;
77
- * }
78
- * ```
79
- */
80
- getStatus(operationId: string): Promise<OperationStatus>;
81
- /**
82
- * Waits for an operation to complete and returns the final result.
83
- *
84
- * @remarks
85
- * This method is useful for resuming polling of an operation that was
86
- * previously interrupted. Unlike `getStatus`, this method will actively
87
- * poll until the operation reaches a final state (confirmed or failed).
88
- *
89
- * @param operationId - The unique identifier of the operation to wait for
90
- * @param options - Optional configuration for polling behavior
91
- * @returns Promise resolving when the operation is confirmed
92
- * @throws {TransactionPendingError} When polling times out
93
- * @throws {Error} When the operation fails
94
- *
95
- * @example
96
- * ```typescript
97
- * // Resume polling with status updates
98
- * const result = await vana.operations.waitForConfirmation(operationId, {
99
- * onStatusUpdate: (status) => {
100
- * console.log(`Current status: ${status.type}`);
101
- * },
102
- * timeout: 600000 // 10 minutes
103
- * });
104
- *
105
- * console.log('Transaction confirmed:', result.hash);
106
- * ```
107
- */
108
- waitForConfirmation(operationId: string, options?: {
109
- signal?: AbortSignal;
110
- onStatusUpdate?: (status: OperationStatus) => void;
111
- timeout?: number;
112
- initialInterval?: number;
113
- maxInterval?: number;
114
- }): Promise<{
115
- hash: string;
116
- receipt?: any;
117
- }>;
118
- /**
119
- * Cancels a pending operation if supported by the backend.
120
- *
121
- * @remarks
122
- * Not all backends support operation cancellation. This method will
123
- * attempt to cancel the operation but success is not guaranteed.
124
- *
125
- * @param operationId - The unique identifier of the operation to cancel
126
- * @returns Promise resolving to true if cancellation was successful
127
- * @throws {Error} When cancellation is not supported or fails
128
- *
129
- * @example
130
- * ```typescript
131
- * try {
132
- * const cancelled = await vana.operations.cancel(operationId);
133
- * if (cancelled) {
134
- * console.log('Operation cancelled successfully');
135
- * }
136
- * } catch (error) {
137
- * console.error('Failed to cancel operation:', error);
138
- * }
139
- * ```
140
- */
141
- cancel(_operationId: string): Promise<boolean>;
142
- /**
143
- * Processes queued operations from the operation store.
144
- *
145
- * @remarks
146
- * This method is designed for worker processes that handle asynchronous
147
- * operation processing. It fetches queued operations, processes them with
148
- * proper nonce management and gas escalation, and handles retries.
149
- *
150
- * This is typically called from a background worker or cron job to process
151
- * operations that were queued for asynchronous execution.
152
- *
153
- * @param config - Configuration for queue processing
154
- * @returns Promise resolving to processing results
155
- *
156
- * @example
157
- * ```typescript
158
- * // In a worker process
159
- * const results = await vana.operations.processQueue({
160
- * operationStore,
161
- * atomicStore,
162
- * walletClient,
163
- * publicClient,
164
- * maxOperations: 10,
165
- * onOperationComplete: (id, success) => {
166
- * console.log(`Operation ${id}: ${success ? 'completed' : 'failed'}`);
167
- * }
168
- * });
169
- *
170
- * console.log(`Processed ${results.processed} operations`);
171
- * ```
172
- */
173
- processQueue(config: {
174
- operationStore: IOperationStore;
175
- atomicStore: IAtomicStore;
176
- walletClient: WalletClient;
177
- publicClient: PublicClient;
178
- maxOperations?: number;
179
- maxRetries?: number;
180
- gasEscalationFactor?: number;
181
- maxGasMultiplier?: number;
182
- onOperationComplete?: (operationId: string, success: boolean) => void;
183
- onError?: (operationId: string, error: Error) => void;
184
- }): Promise<{
185
- processed: number;
186
- succeeded: number;
187
- failed: number;
188
- errors: Array<{
189
- operationId: string;
190
- error: string;
191
- }>;
192
- }>;
193
- /**
194
- * Burns a stuck nonce by sending a minimal self-transfer.
195
- *
196
- * @remarks
197
- * This method is used to unblock the transaction queue when a transaction
198
- * is stuck. It sends a minimal amount to the same address with the stuck
199
- * nonce and higher gas to ensure it gets mined.
200
- *
201
- * @param config - Configuration for nonce burning
202
- * @returns Promise resolving to the burn transaction hash
203
- *
204
- * @example
205
- * ```typescript
206
- * const hash = await vana.operations.burnStuckNonce({
207
- * walletClient,
208
- * publicClient,
209
- * atomicStore,
210
- * address: relayerAddress,
211
- * stuckNonce: 42
212
- * });
213
- *
214
- * console.log(`Burned stuck nonce with tx: ${hash}`);
215
- * ```
216
- */
217
- burnStuckNonce(config: {
218
- walletClient: WalletClient;
219
- publicClient: PublicClient;
220
- atomicStore: IAtomicStore;
221
- address: `0x${string}`;
222
- stuckNonce: number;
223
- }): Promise<string>;
224
- /**
225
- * Maps a relayer response to an OperationStatus object.
226
- * @internal
227
- */
228
- private mapResponseToStatus;
229
- }
@@ -1,406 +0,0 @@
1
- import { BaseController } from "./base";
2
- import { PollingManager } from "../core/pollingManager";
3
- import { DistributedNonceManager } from "../core/nonceManager";
4
- import { InMemoryNonceManager } from "../core/inMemoryNonceManager";
5
- import { parseEther } from "viem";
6
- class OperationsController extends BaseController {
7
- constructor(context) {
8
- super(context);
9
- }
10
- /**
11
- * Gets the current status of an operation.
12
- *
13
- * @remarks
14
- * This method allows recovery of operations that were interrupted due to:
15
- * - Browser tab closure
16
- * - Network disconnection
17
- * - Application errors
18
- * - Timeout during polling
19
- *
20
- * The method queries the backend for the current operation state without
21
- * starting a new polling session.
22
- *
23
- * @param operationId - The unique identifier of the operation to check
24
- * @returns Promise resolving to the current operation status
25
- * @throws {Error} When relayer is not configured
26
- * @throws {Error} When operation is not found
27
- *
28
- * @example
29
- * ```typescript
30
- * const status = await vana.operations.getStatus('550e8400-e29b-41d4-a716-446655440000');
31
- *
32
- * switch(status.type) {
33
- * case 'pending':
34
- * console.log('Still processing...');
35
- * break;
36
- * case 'queued':
37
- * console.log(`Position in queue: ${status.position}`);
38
- * break;
39
- * case 'confirmed':
40
- * console.log(`Transaction confirmed: ${status.receipt.transactionHash}`);
41
- * break;
42
- * case 'failed':
43
- * console.error(`Operation failed: ${status.error}`);
44
- * break;
45
- * }
46
- * ```
47
- */
48
- async getStatus(operationId) {
49
- if (!this.context.relayer) {
50
- throw new Error("Relayer not configured");
51
- }
52
- const request = {
53
- type: "status_check",
54
- operationId
55
- };
56
- const response = await this.context.relayer(request);
57
- return this.mapResponseToStatus(response, operationId);
58
- }
59
- /**
60
- * Waits for an operation to complete and returns the final result.
61
- *
62
- * @remarks
63
- * This method is useful for resuming polling of an operation that was
64
- * previously interrupted. Unlike `getStatus`, this method will actively
65
- * poll until the operation reaches a final state (confirmed or failed).
66
- *
67
- * @param operationId - The unique identifier of the operation to wait for
68
- * @param options - Optional configuration for polling behavior
69
- * @returns Promise resolving when the operation is confirmed
70
- * @throws {TransactionPendingError} When polling times out
71
- * @throws {Error} When the operation fails
72
- *
73
- * @example
74
- * ```typescript
75
- * // Resume polling with status updates
76
- * const result = await vana.operations.waitForConfirmation(operationId, {
77
- * onStatusUpdate: (status) => {
78
- * console.log(`Current status: ${status.type}`);
79
- * },
80
- * timeout: 600000 // 10 minutes
81
- * });
82
- *
83
- * console.log('Transaction confirmed:', result.hash);
84
- * ```
85
- */
86
- async waitForConfirmation(operationId, options) {
87
- if (!this.context.relayer) {
88
- throw new Error("Relayer not configured");
89
- }
90
- const currentStatus = await this.getStatus(operationId);
91
- if (currentStatus.type === "confirmed") {
92
- return {
93
- hash: currentStatus.hash,
94
- receipt: currentStatus.receipt
95
- };
96
- }
97
- if (currentStatus.type === "failed") {
98
- throw new Error(currentStatus.error);
99
- }
100
- const pollingManager = new PollingManager(this.context.relayer);
101
- return await pollingManager.startPolling(operationId, {
102
- signal: options?.signal,
103
- onStatusUpdate: options?.onStatusUpdate,
104
- timeout: options?.timeout,
105
- initialInterval: options?.initialInterval,
106
- maxInterval: options?.maxInterval
107
- });
108
- }
109
- /**
110
- * Cancels a pending operation if supported by the backend.
111
- *
112
- * @remarks
113
- * Not all backends support operation cancellation. This method will
114
- * attempt to cancel the operation but success is not guaranteed.
115
- *
116
- * @param operationId - The unique identifier of the operation to cancel
117
- * @returns Promise resolving to true if cancellation was successful
118
- * @throws {Error} When cancellation is not supported or fails
119
- *
120
- * @example
121
- * ```typescript
122
- * try {
123
- * const cancelled = await vana.operations.cancel(operationId);
124
- * if (cancelled) {
125
- * console.log('Operation cancelled successfully');
126
- * }
127
- * } catch (error) {
128
- * console.error('Failed to cancel operation:', error);
129
- * }
130
- * ```
131
- */
132
- async cancel(_operationId) {
133
- if (!this.context.relayer) {
134
- throw new Error("Relayer not configured");
135
- }
136
- throw new Error("Operation cancellation is not yet implemented");
137
- }
138
- /**
139
- * Processes queued operations from the operation store.
140
- *
141
- * @remarks
142
- * This method is designed for worker processes that handle asynchronous
143
- * operation processing. It fetches queued operations, processes them with
144
- * proper nonce management and gas escalation, and handles retries.
145
- *
146
- * This is typically called from a background worker or cron job to process
147
- * operations that were queued for asynchronous execution.
148
- *
149
- * @param config - Configuration for queue processing
150
- * @returns Promise resolving to processing results
151
- *
152
- * @example
153
- * ```typescript
154
- * // In a worker process
155
- * const results = await vana.operations.processQueue({
156
- * operationStore,
157
- * atomicStore,
158
- * walletClient,
159
- * publicClient,
160
- * maxOperations: 10,
161
- * onOperationComplete: (id, success) => {
162
- * console.log(`Operation ${id}: ${success ? 'completed' : 'failed'}`);
163
- * }
164
- * });
165
- *
166
- * console.log(`Processed ${results.processed} operations`);
167
- * ```
168
- */
169
- async processQueue(config) {
170
- const {
171
- operationStore,
172
- atomicStore,
173
- walletClient,
174
- publicClient,
175
- maxOperations = 10,
176
- maxRetries = 3,
177
- gasEscalationFactor = 1.2,
178
- maxGasMultiplier = 3,
179
- onOperationComplete,
180
- onError
181
- } = config;
182
- const results = {
183
- processed: 0,
184
- succeeded: 0,
185
- failed: 0,
186
- errors: []
187
- };
188
- const nonceManager = atomicStore ? new DistributedNonceManager({
189
- atomicStore,
190
- publicClient
191
- }) : new InMemoryNonceManager(publicClient);
192
- const operations = await operationStore.getQueuedOperations({
193
- limit: maxOperations
194
- });
195
- console.log(
196
- `[OperationsController] Processing ${operations.length} queued operations`
197
- );
198
- for (const operation of operations) {
199
- results.processed++;
200
- try {
201
- await operationStore.updateStatus(operation.id, "processing");
202
- const storedTx = JSON.parse(operation.data, (_key, value) => {
203
- if (typeof value === "string" && value.startsWith("__BIGINT__")) {
204
- return BigInt(value.slice(10));
205
- }
206
- return value;
207
- });
208
- const chainId = await walletClient.getChainId();
209
- const [address] = await walletClient.getAddresses();
210
- const nonce = await nonceManager.assignNonce(address, chainId);
211
- if (nonce === null || nonce === void 0) {
212
- throw new Error("Failed to acquire nonce");
213
- }
214
- const retryCount = operation.retryCount ?? 0;
215
- const gasMultiplier = Math.min(
216
- Math.pow(gasEscalationFactor, retryCount),
217
- maxGasMultiplier
218
- );
219
- const escalatedTx = {
220
- ...storedTx,
221
- nonce,
222
- maxFeePerGas: storedTx.maxFeePerGas ? BigInt(Math.floor(Number(storedTx.maxFeePerGas) * gasMultiplier)) : void 0,
223
- maxPriorityFeePerGas: storedTx.maxPriorityFeePerGas ? BigInt(
224
- Math.floor(
225
- Number(storedTx.maxPriorityFeePerGas) * gasMultiplier
226
- )
227
- ) : void 0,
228
- gasPrice: storedTx.gasPrice ? BigInt(Math.floor(Number(storedTx.gasPrice) * gasMultiplier)) : void 0
229
- };
230
- console.log(
231
- `[OperationsController] Processing operation ${operation.id} with nonce ${nonce} (retry ${retryCount})`
232
- );
233
- const hash = await walletClient.sendTransaction(escalatedTx);
234
- await operationStore.updateStatus(operation.id, "submitted", {
235
- hash,
236
- nonce,
237
- submittedAt: Date.now()
238
- });
239
- console.log(
240
- `[OperationsController] Operation ${operation.id} submitted: ${hash}`
241
- );
242
- const receipt = await publicClient.waitForTransactionReceipt({
243
- hash,
244
- timeout: 6e4
245
- // 1 minute timeout
246
- });
247
- if (receipt.status === "success") {
248
- await operationStore.updateStatus(operation.id, "completed", {
249
- receipt,
250
- completedAt: Date.now()
251
- });
252
- results.succeeded++;
253
- onOperationComplete?.(operation.id, true);
254
- console.log(
255
- `[OperationsController] Operation ${operation.id} completed successfully`
256
- );
257
- } else {
258
- throw new Error(`Transaction reverted: ${hash}`);
259
- }
260
- } catch (error) {
261
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
262
- console.error(
263
- `[OperationsController] Operation ${operation.id} failed:`,
264
- errorMessage
265
- );
266
- results.failed++;
267
- results.errors.push({
268
- operationId: operation.id,
269
- error: errorMessage
270
- });
271
- const retryCount = (operation.retryCount ?? 0) + 1;
272
- if (retryCount >= maxRetries) {
273
- await operationStore.updateStatus(operation.id, "failed", {
274
- error: errorMessage,
275
- failedAt: Date.now()
276
- });
277
- } else {
278
- await operationStore.updateStatus(operation.id, "queued", {
279
- retryCount,
280
- lastError: errorMessage,
281
- lastAttemptAt: Date.now()
282
- });
283
- }
284
- onOperationComplete?.(operation.id, false);
285
- onError?.(
286
- operation.id,
287
- error instanceof Error ? error : new Error(errorMessage)
288
- );
289
- }
290
- }
291
- return results;
292
- }
293
- /**
294
- * Burns a stuck nonce by sending a minimal self-transfer.
295
- *
296
- * @remarks
297
- * This method is used to unblock the transaction queue when a transaction
298
- * is stuck. It sends a minimal amount to the same address with the stuck
299
- * nonce and higher gas to ensure it gets mined.
300
- *
301
- * @param config - Configuration for nonce burning
302
- * @returns Promise resolving to the burn transaction hash
303
- *
304
- * @example
305
- * ```typescript
306
- * const hash = await vana.operations.burnStuckNonce({
307
- * walletClient,
308
- * publicClient,
309
- * atomicStore,
310
- * address: relayerAddress,
311
- * stuckNonce: 42
312
- * });
313
- *
314
- * console.log(`Burned stuck nonce with tx: ${hash}`);
315
- * ```
316
- */
317
- async burnStuckNonce(config) {
318
- const { walletClient, publicClient, atomicStore, address, stuckNonce } = config;
319
- console.log(
320
- `[OperationsController] Burning stuck nonce ${stuckNonce} for ${address}`
321
- );
322
- const gasPrice = await publicClient.getGasPrice();
323
- const premiumGasPrice = gasPrice * 150n / 100n;
324
- const hash = await walletClient.sendTransaction({
325
- account: walletClient.account,
326
- chain: walletClient.chain,
327
- to: address,
328
- value: parseEther("0.00001"),
329
- // Minimal amount
330
- nonce: stuckNonce,
331
- gasPrice: premiumGasPrice,
332
- gas: 21000n
333
- // Standard transfer gas
334
- });
335
- console.log(`[OperationsController] Nonce burn transaction sent: ${hash}`);
336
- const receipt = await publicClient.waitForTransactionReceipt({
337
- hash,
338
- timeout: 12e4
339
- // 2 minutes
340
- });
341
- if (receipt.status === "success") {
342
- console.log(
343
- `[OperationsController] Nonce ${stuckNonce} successfully burned`
344
- );
345
- const chainId = await walletClient.getChainId();
346
- const lastUsedKey = `nonce:${chainId}:${address}:lastUsed`;
347
- const currentLastUsed = await atomicStore.get(lastUsedKey);
348
- if (!currentLastUsed || parseInt(currentLastUsed) < stuckNonce) {
349
- await atomicStore.set(lastUsedKey, stuckNonce.toString());
350
- }
351
- } else {
352
- throw new Error(`Nonce burn transaction failed: ${hash}`);
353
- }
354
- return hash;
355
- }
356
- /**
357
- * Maps a relayer response to an OperationStatus object.
358
- * @internal
359
- */
360
- mapResponseToStatus(response, operationId) {
361
- switch (response.type) {
362
- case "pending":
363
- return {
364
- type: "pending",
365
- operationId: response.operationId
366
- };
367
- case "submitted":
368
- return {
369
- type: "submitted",
370
- hash: response.hash
371
- };
372
- case "confirmed":
373
- return {
374
- type: "confirmed",
375
- hash: response.hash,
376
- receipt: response.receipt
377
- };
378
- case "error":
379
- return {
380
- type: "failed",
381
- error: response.error || "Unknown error",
382
- operationId
383
- };
384
- case "signed":
385
- return {
386
- type: "submitted",
387
- hash: response.hash
388
- };
389
- case "direct":
390
- return {
391
- type: "confirmed",
392
- hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
393
- receipt: void 0
394
- };
395
- default:
396
- return {
397
- type: "pending",
398
- operationId
399
- };
400
- }
401
- }
402
- }
403
- export {
404
- OperationsController
405
- };
406
- //# sourceMappingURL=operations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/controllers/operations.ts"],"sourcesContent":["/**\n * Operations controller for managing and recovering asynchronous relayer operations.\n *\n * @module\n */\n\nimport type { ControllerContext } from \"./permissions\";\nimport type { OperationStatus } from \"../types/options\";\nimport type {\n UnifiedRelayerRequest,\n UnifiedRelayerResponse,\n} from \"../types/relayer\";\nimport type { IOperationStore } from \"../types/operationStore\";\nimport type { IAtomicStore } from \"../types/atomicStore\";\nimport type { WalletClient, PublicClient } from \"viem\";\nimport { BaseController } from \"./base\";\nimport { PollingManager } from \"../core/pollingManager\";\nimport { DistributedNonceManager } from \"../core/nonceManager\";\nimport { InMemoryNonceManager } from \"../core/inMemoryNonceManager\";\nimport { parseEther } from \"viem\";\n\n/**\n * Controller for managing asynchronous operations.\n *\n * This controller provides methods to check the status of pending operations\n * and recover from interrupted transactions.\n *\n * @category Controllers\n * @example\n * ```typescript\n * // Recover an orphaned operation\n * try {\n * const result = await vana.permissions.grant(...);\n * } catch (error) {\n * if (error instanceof TransactionPendingError) {\n * // Save the operation ID\n * localStorage.setItem('pendingOp', error.operationId);\n *\n * // Later, check the status\n * const operationId = localStorage.getItem('pendingOp');\n * const status = await vana.operations.getStatus(operationId);\n *\n * if (status.type === 'confirmed') {\n * console.log('Transaction confirmed:', status.receipt);\n * }\n * }\n * }\n * ```\n */\nexport class OperationsController extends BaseController {\n constructor(context: ControllerContext) {\n super(context);\n }\n\n /**\n * Gets the current status of an operation.\n *\n * @remarks\n * This method allows recovery of operations that were interrupted due to:\n * - Browser tab closure\n * - Network disconnection\n * - Application errors\n * - Timeout during polling\n *\n * The method queries the backend for the current operation state without\n * starting a new polling session.\n *\n * @param operationId - The unique identifier of the operation to check\n * @returns Promise resolving to the current operation status\n * @throws {Error} When relayer is not configured\n * @throws {Error} When operation is not found\n *\n * @example\n * ```typescript\n * const status = await vana.operations.getStatus('550e8400-e29b-41d4-a716-446655440000');\n *\n * switch(status.type) {\n * case 'pending':\n * console.log('Still processing...');\n * break;\n * case 'queued':\n * console.log(`Position in queue: ${status.position}`);\n * break;\n * case 'confirmed':\n * console.log(`Transaction confirmed: ${status.receipt.transactionHash}`);\n * break;\n * case 'failed':\n * console.error(`Operation failed: ${status.error}`);\n * break;\n * }\n * ```\n */\n async getStatus(operationId: string): Promise<OperationStatus> {\n if (!this.context.relayer) {\n throw new Error(\"Relayer not configured\");\n }\n\n const request: UnifiedRelayerRequest = {\n type: \"status_check\",\n operationId,\n };\n\n const response = await this.context.relayer(request);\n\n return this.mapResponseToStatus(response, operationId);\n }\n\n /**\n * Waits for an operation to complete and returns the final result.\n *\n * @remarks\n * This method is useful for resuming polling of an operation that was\n * previously interrupted. Unlike `getStatus`, this method will actively\n * poll until the operation reaches a final state (confirmed or failed).\n *\n * @param operationId - The unique identifier of the operation to wait for\n * @param options - Optional configuration for polling behavior\n * @returns Promise resolving when the operation is confirmed\n * @throws {TransactionPendingError} When polling times out\n * @throws {Error} When the operation fails\n *\n * @example\n * ```typescript\n * // Resume polling with status updates\n * const result = await vana.operations.waitForConfirmation(operationId, {\n * onStatusUpdate: (status) => {\n * console.log(`Current status: ${status.type}`);\n * },\n * timeout: 600000 // 10 minutes\n * });\n *\n * console.log('Transaction confirmed:', result.hash);\n * ```\n */\n async waitForConfirmation(\n operationId: string,\n options?: {\n signal?: AbortSignal;\n onStatusUpdate?: (status: OperationStatus) => void;\n timeout?: number;\n initialInterval?: number;\n maxInterval?: number;\n },\n ): Promise<{ hash: string; receipt?: any }> {\n if (!this.context.relayer) {\n throw new Error(\"Relayer not configured\");\n }\n\n // First check if already completed\n const currentStatus = await this.getStatus(operationId);\n\n if (currentStatus.type === \"confirmed\") {\n return {\n hash: currentStatus.hash,\n receipt: currentStatus.receipt,\n };\n }\n\n if (currentStatus.type === \"failed\") {\n throw new Error(currentStatus.error);\n }\n\n // Start polling if still pending\n const pollingManager = new PollingManager(this.context.relayer);\n\n return await pollingManager.startPolling(operationId, {\n signal: options?.signal,\n onStatusUpdate: options?.onStatusUpdate,\n timeout: options?.timeout,\n initialInterval: options?.initialInterval,\n maxInterval: options?.maxInterval,\n });\n }\n\n /**\n * Cancels a pending operation if supported by the backend.\n *\n * @remarks\n * Not all backends support operation cancellation. This method will\n * attempt to cancel the operation but success is not guaranteed.\n *\n * @param operationId - The unique identifier of the operation to cancel\n * @returns Promise resolving to true if cancellation was successful\n * @throws {Error} When cancellation is not supported or fails\n *\n * @example\n * ```typescript\n * try {\n * const cancelled = await vana.operations.cancel(operationId);\n * if (cancelled) {\n * console.log('Operation cancelled successfully');\n * }\n * } catch (error) {\n * console.error('Failed to cancel operation:', error);\n * }\n * ```\n */\n async cancel(_operationId: string): Promise<boolean> {\n if (!this.context.relayer) {\n throw new Error(\"Relayer not configured\");\n }\n\n // This would require a new request type in the relayer protocol\n // For now, we'll throw an error indicating it's not implemented\n throw new Error(\"Operation cancellation is not yet implemented\");\n\n // Future implementation would look like:\n // const request: UnifiedRelayerRequest = {\n // type: 'cancel_operation',\n // operationId: _operationId\n // };\n //\n // const response = await this.context.relayer(request);\n // return response.type === 'success';\n }\n\n /**\n * Processes queued operations from the operation store.\n *\n * @remarks\n * This method is designed for worker processes that handle asynchronous\n * operation processing. It fetches queued operations, processes them with\n * proper nonce management and gas escalation, and handles retries.\n *\n * This is typically called from a background worker or cron job to process\n * operations that were queued for asynchronous execution.\n *\n * @param config - Configuration for queue processing\n * @returns Promise resolving to processing results\n *\n * @example\n * ```typescript\n * // In a worker process\n * const results = await vana.operations.processQueue({\n * operationStore,\n * atomicStore,\n * walletClient,\n * publicClient,\n * maxOperations: 10,\n * onOperationComplete: (id, success) => {\n * console.log(`Operation ${id}: ${success ? 'completed' : 'failed'}`);\n * }\n * });\n *\n * console.log(`Processed ${results.processed} operations`);\n * ```\n */\n async processQueue(config: {\n operationStore: IOperationStore;\n atomicStore: IAtomicStore;\n walletClient: WalletClient;\n publicClient: PublicClient;\n maxOperations?: number;\n maxRetries?: number;\n gasEscalationFactor?: number;\n maxGasMultiplier?: number;\n onOperationComplete?: (operationId: string, success: boolean) => void;\n onError?: (operationId: string, error: Error) => void;\n }): Promise<{\n processed: number;\n succeeded: number;\n failed: number;\n errors: Array<{ operationId: string; error: string }>;\n }> {\n const {\n operationStore,\n atomicStore,\n walletClient,\n publicClient,\n maxOperations = 10,\n maxRetries = 3,\n gasEscalationFactor = 1.2,\n maxGasMultiplier = 3,\n onOperationComplete,\n onError,\n } = config;\n\n const results = {\n processed: 0,\n succeeded: 0,\n failed: 0,\n errors: [] as Array<{ operationId: string; error: string }>,\n };\n\n // Initialize appropriate nonce manager based on configuration\n // If we have an atomicStore, use distributed nonce manager for multi-instance safety\n // Otherwise use in-memory for single-instance simplicity\n const nonceManager = atomicStore\n ? new DistributedNonceManager({\n atomicStore,\n publicClient,\n })\n : new InMemoryNonceManager(publicClient);\n\n // Get queued operations\n const operations = await operationStore.getQueuedOperations({\n limit: maxOperations,\n });\n\n console.log(\n `[OperationsController] Processing ${operations.length} queued operations`,\n );\n\n for (const operation of operations) {\n results.processed++;\n\n try {\n // Mark as processing\n await operationStore.updateStatus(operation.id, \"processing\");\n\n // Parse the stored transaction\n const storedTx = JSON.parse(operation.data, (_key, value) => {\n if (typeof value === \"string\" && value.startsWith(\"__BIGINT__\")) {\n return BigInt(value.slice(10));\n }\n return value;\n });\n\n // Get chain ID from wallet client\n const chainId = await walletClient.getChainId();\n\n // Get relayer address\n const [address] = await walletClient.getAddresses();\n\n // Assign nonce atomically\n const nonce = await nonceManager.assignNonce(address, chainId);\n\n if (nonce === null || nonce === undefined) {\n throw new Error(\"Failed to acquire nonce\");\n }\n\n // Calculate gas with escalation based on retry count\n const retryCount = operation.retryCount ?? 0;\n const gasMultiplier = Math.min(\n Math.pow(gasEscalationFactor, retryCount),\n maxGasMultiplier,\n );\n\n // Apply gas escalation\n const escalatedTx = {\n ...storedTx,\n nonce,\n maxFeePerGas: storedTx.maxFeePerGas\n ? BigInt(Math.floor(Number(storedTx.maxFeePerGas) * gasMultiplier))\n : undefined,\n maxPriorityFeePerGas: storedTx.maxPriorityFeePerGas\n ? BigInt(\n Math.floor(\n Number(storedTx.maxPriorityFeePerGas) * gasMultiplier,\n ),\n )\n : undefined,\n gasPrice: storedTx.gasPrice\n ? BigInt(Math.floor(Number(storedTx.gasPrice) * gasMultiplier))\n : undefined,\n };\n\n console.log(\n `[OperationsController] Processing operation ${operation.id} with nonce ${nonce} (retry ${retryCount})`,\n );\n\n // Send transaction\n const hash = await walletClient.sendTransaction(escalatedTx);\n\n // Update status to submitted\n await operationStore.updateStatus(operation.id, \"submitted\", {\n hash,\n nonce,\n submittedAt: Date.now(),\n });\n\n console.log(\n `[OperationsController] Operation ${operation.id} submitted: ${hash}`,\n );\n\n // Wait for confirmation (with timeout)\n const receipt = await publicClient.waitForTransactionReceipt({\n hash,\n timeout: 60000, // 1 minute timeout\n });\n\n if (receipt.status === \"success\") {\n // Update to completed\n await operationStore.updateStatus(operation.id, \"completed\", {\n receipt,\n completedAt: Date.now(),\n });\n\n results.succeeded++;\n onOperationComplete?.(operation.id, true);\n\n console.log(\n `[OperationsController] Operation ${operation.id} completed successfully`,\n );\n } else {\n // Transaction reverted\n throw new Error(`Transaction reverted: ${hash}`);\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n console.error(\n `[OperationsController] Operation ${operation.id} failed:`,\n errorMessage,\n );\n\n results.failed++;\n results.errors.push({\n operationId: operation.id,\n error: errorMessage,\n });\n\n const retryCount = (operation.retryCount ?? 0) + 1;\n\n if (retryCount >= maxRetries) {\n // Max retries reached, mark as failed\n await operationStore.updateStatus(operation.id, \"failed\", {\n error: errorMessage,\n failedAt: Date.now(),\n });\n } else {\n // Return to queue for retry\n await operationStore.updateStatus(operation.id, \"queued\", {\n retryCount,\n lastError: errorMessage,\n lastAttemptAt: Date.now(),\n });\n }\n\n onOperationComplete?.(operation.id, false);\n onError?.(\n operation.id,\n error instanceof Error ? error : new Error(errorMessage),\n );\n }\n }\n\n return results;\n }\n\n /**\n * Burns a stuck nonce by sending a minimal self-transfer.\n *\n * @remarks\n * This method is used to unblock the transaction queue when a transaction\n * is stuck. It sends a minimal amount to the same address with the stuck\n * nonce and higher gas to ensure it gets mined.\n *\n * @param config - Configuration for nonce burning\n * @returns Promise resolving to the burn transaction hash\n *\n * @example\n * ```typescript\n * const hash = await vana.operations.burnStuckNonce({\n * walletClient,\n * publicClient,\n * atomicStore,\n * address: relayerAddress,\n * stuckNonce: 42\n * });\n *\n * console.log(`Burned stuck nonce with tx: ${hash}`);\n * ```\n */\n async burnStuckNonce(config: {\n walletClient: WalletClient;\n publicClient: PublicClient;\n atomicStore: IAtomicStore;\n address: `0x${string}`;\n stuckNonce: number;\n }): Promise<string> {\n const { walletClient, publicClient, atomicStore, address, stuckNonce } =\n config;\n\n console.log(\n `[OperationsController] Burning stuck nonce ${stuckNonce} for ${address}`,\n );\n\n // Get current gas prices with 50% premium\n const gasPrice = await publicClient.getGasPrice();\n const premiumGasPrice = (gasPrice * 150n) / 100n;\n\n // Send minimal self-transfer\n const hash = await walletClient.sendTransaction({\n account: walletClient.account!,\n chain: walletClient.chain,\n to: address,\n value: parseEther(\"0.00001\"), // Minimal amount\n nonce: stuckNonce,\n gasPrice: premiumGasPrice,\n gas: 21000n, // Standard transfer gas\n });\n\n console.log(`[OperationsController] Nonce burn transaction sent: ${hash}`);\n\n // Wait for confirmation\n const receipt = await publicClient.waitForTransactionReceipt({\n hash,\n timeout: 120000, // 2 minutes\n });\n\n if (receipt.status === \"success\") {\n console.log(\n `[OperationsController] Nonce ${stuckNonce} successfully burned`,\n );\n\n // Update stored nonce to reflect the burn\n const chainId = await walletClient.getChainId();\n const lastUsedKey = `nonce:${chainId}:${address}:lastUsed`;\n\n // Only update if this nonce was higher than stored\n const currentLastUsed = await atomicStore.get(lastUsedKey);\n if (!currentLastUsed || parseInt(currentLastUsed) < stuckNonce) {\n await atomicStore.set(lastUsedKey, stuckNonce.toString());\n }\n } else {\n throw new Error(`Nonce burn transaction failed: ${hash}`);\n }\n\n return hash;\n }\n\n /**\n * Maps a relayer response to an OperationStatus object.\n * @internal\n */\n private mapResponseToStatus(\n response: UnifiedRelayerResponse,\n operationId: string,\n ): OperationStatus {\n switch (response.type) {\n case \"pending\":\n return {\n type: \"pending\",\n operationId: response.operationId,\n };\n\n case \"submitted\":\n return {\n type: \"submitted\",\n hash: response.hash,\n };\n\n case \"confirmed\":\n return {\n type: \"confirmed\",\n hash: response.hash,\n receipt: response.receipt,\n };\n\n case \"error\":\n return {\n type: \"failed\",\n error: response.error || \"Unknown error\",\n operationId,\n };\n\n case \"signed\":\n // Signed responses are considered submitted\n return {\n type: \"submitted\",\n hash: response.hash,\n };\n\n case \"direct\":\n // Direct responses are immediately confirmed\n // For direct operations, we don't have a transaction hash\n return {\n type: \"confirmed\",\n hash: \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n receipt: undefined,\n };\n\n default:\n // Handle other response types as pending\n return {\n type: \"pending\",\n operationId,\n };\n }\n }\n}\n"],"mappings":"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","names":[]}