@opendatalabs/vana-sdk 2.3.0 → 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 (618) 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/index.cjs +2 -37
  62. package/dist/generated/abi/index.cjs.map +1 -1
  63. package/dist/generated/abi/index.d.ts +2683 -9296
  64. package/dist/generated/abi/index.js +2 -29
  65. package/dist/generated/abi/index.js.map +1 -1
  66. package/dist/generated/addresses.cjs +5 -107
  67. package/dist/generated/addresses.cjs.map +1 -1
  68. package/dist/generated/addresses.d.ts +5 -99
  69. package/dist/generated/addresses.js +5 -105
  70. package/dist/generated/addresses.js.map +1 -1
  71. package/dist/index.browser.d.ts +23 -140
  72. package/dist/index.browser.js +32090 -114
  73. package/dist/index.browser.js.map +7 -1
  74. package/dist/index.node.cjs +32809 -160
  75. package/dist/index.node.cjs.map +7 -1
  76. package/dist/index.node.d.ts +22 -210
  77. package/dist/index.node.js +32716 -133
  78. package/dist/index.node.js.map +7 -1
  79. package/dist/protocol/data-file.cjs +56 -0
  80. package/dist/protocol/data-file.cjs.map +1 -0
  81. package/dist/protocol/data-file.d.ts +20 -0
  82. package/dist/protocol/data-file.js +30 -0
  83. package/dist/protocol/data-file.js.map +1 -0
  84. package/dist/protocol/eip712.cjs +123 -0
  85. package/dist/protocol/eip712.cjs.map +1 -0
  86. package/dist/protocol/eip712.d.ts +117 -0
  87. package/dist/protocol/eip712.js +90 -0
  88. package/dist/protocol/eip712.js.map +1 -0
  89. package/dist/protocol/gateway.cjs +226 -0
  90. package/dist/protocol/gateway.cjs.map +1 -0
  91. package/dist/protocol/gateway.d.ts +120 -0
  92. package/dist/protocol/gateway.js +202 -0
  93. package/dist/protocol/gateway.js.map +1 -0
  94. package/dist/protocol/scopes.cjs +78 -0
  95. package/dist/protocol/scopes.cjs.map +1 -0
  96. package/dist/protocol/scopes.d.ts +13 -0
  97. package/dist/protocol/scopes.js +50 -0
  98. package/dist/protocol/scopes.js.map +1 -0
  99. package/dist/{types/atomicStore.cjs → storage/default.cjs} +9 -8
  100. package/dist/storage/default.cjs.map +1 -0
  101. package/dist/storage/default.d.ts +4 -0
  102. package/dist/storage/default.js +8 -0
  103. package/dist/storage/default.js.map +1 -0
  104. package/dist/storage/index.cjs +11 -2
  105. package/dist/storage/index.cjs.map +1 -1
  106. package/dist/storage/index.d.ts +9 -0
  107. package/dist/storage/index.js +7 -1
  108. package/dist/storage/index.js.map +1 -1
  109. package/dist/storage/providers/callback-storage.cjs +1 -0
  110. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  111. package/dist/storage/providers/callback-storage.js +1 -0
  112. package/dist/storage/providers/callback-storage.js.map +1 -1
  113. package/dist/storage/providers/dropbox.cjs +1 -0
  114. package/dist/storage/providers/dropbox.cjs.map +1 -1
  115. package/dist/storage/providers/dropbox.js +1 -0
  116. package/dist/storage/providers/dropbox.js.map +1 -1
  117. package/dist/storage/providers/google-drive.cjs +1 -0
  118. package/dist/storage/providers/google-drive.cjs.map +1 -1
  119. package/dist/storage/providers/google-drive.js +1 -0
  120. package/dist/storage/providers/google-drive.js.map +1 -1
  121. package/dist/storage/providers/ipfs.cjs +1 -0
  122. package/dist/storage/providers/ipfs.cjs.map +1 -1
  123. package/dist/storage/providers/ipfs.js +1 -0
  124. package/dist/storage/providers/ipfs.js.map +1 -1
  125. package/dist/storage/providers/pinata.cjs +1 -0
  126. package/dist/storage/providers/pinata.cjs.map +1 -1
  127. package/dist/storage/providers/pinata.js +1 -0
  128. package/dist/storage/providers/pinata.js.map +1 -1
  129. package/dist/storage/providers/r2.cjs +376 -0
  130. package/dist/storage/providers/r2.cjs.map +1 -0
  131. package/dist/storage/providers/r2.d.ts +91 -0
  132. package/dist/storage/providers/r2.js +354 -0
  133. package/dist/storage/providers/r2.js.map +1 -0
  134. package/dist/storage/providers/vana-storage.cjs +251 -0
  135. package/dist/storage/providers/vana-storage.cjs.map +1 -0
  136. package/dist/storage/providers/vana-storage.d.ts +100 -0
  137. package/dist/storage/providers/vana-storage.js +231 -0
  138. package/dist/storage/providers/vana-storage.js.map +1 -0
  139. package/dist/types/config.cjs +0 -34
  140. package/dist/types/config.cjs.map +1 -1
  141. package/dist/types/config.d.ts +1 -607
  142. package/dist/types/config.js +0 -22
  143. package/dist/types/config.js.map +1 -1
  144. package/dist/types/contracts.cjs.map +1 -1
  145. package/dist/types/contracts.d.ts +1 -1
  146. package/dist/types/index.cjs +2 -33
  147. package/dist/types/index.cjs.map +1 -1
  148. package/dist/types/index.d.ts +2 -33
  149. package/dist/types/index.js +1 -35
  150. package/dist/types/index.js.map +1 -1
  151. package/dist/types/ps-errors.cjs +66 -0
  152. package/dist/types/ps-errors.cjs.map +1 -0
  153. package/dist/types/ps-errors.d.ts +25 -0
  154. package/dist/types/ps-errors.js +41 -0
  155. package/dist/types/ps-errors.js.map +1 -0
  156. package/dist/types.cjs.map +1 -1
  157. package/dist/types.d.ts +0 -29
  158. package/dist/types.js.map +1 -1
  159. package/package.json +7 -25
  160. package/dist/client/enhancedResponse.cjs +0 -164
  161. package/dist/client/enhancedResponse.cjs.map +0 -1
  162. package/dist/client/enhancedResponse.d.ts +0 -120
  163. package/dist/client/enhancedResponse.js +0 -138
  164. package/dist/client/enhancedResponse.js.map +0 -1
  165. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +0 -7
  166. package/dist/controllers/base.cjs +0 -116
  167. package/dist/controllers/base.cjs.map +0 -1
  168. package/dist/controllers/base.d.ts +0 -94
  169. package/dist/controllers/base.js +0 -92
  170. package/dist/controllers/base.js.map +0 -1
  171. package/dist/controllers/data.cjs +0 -2633
  172. package/dist/controllers/data.cjs.map +0 -1
  173. package/dist/controllers/data.d.ts +0 -1067
  174. package/dist/controllers/data.js +0 -2626
  175. package/dist/controllers/data.js.map +0 -1
  176. package/dist/controllers/operations.cjs +0 -430
  177. package/dist/controllers/operations.cjs.map +0 -1
  178. package/dist/controllers/operations.d.ts +0 -229
  179. package/dist/controllers/operations.js +0 -406
  180. package/dist/controllers/operations.js.map +0 -1
  181. package/dist/controllers/permissions.cjs +0 -4368
  182. package/dist/controllers/permissions.cjs.map +0 -1
  183. package/dist/controllers/permissions.d.ts +0 -1411
  184. package/dist/controllers/permissions.js +0 -4344
  185. package/dist/controllers/permissions.js.map +0 -1
  186. package/dist/controllers/protocol.cjs +0 -183
  187. package/dist/controllers/protocol.cjs.map +0 -1
  188. package/dist/controllers/protocol.d.ts +0 -138
  189. package/dist/controllers/protocol.js +0 -163
  190. package/dist/controllers/protocol.js.map +0 -1
  191. package/dist/controllers/schemas.cjs +0 -678
  192. package/dist/controllers/schemas.cjs.map +0 -1
  193. package/dist/controllers/schemas.d.ts +0 -293
  194. package/dist/controllers/schemas.js +0 -654
  195. package/dist/controllers/schemas.js.map +0 -1
  196. package/dist/controllers/server.cjs +0 -643
  197. package/dist/controllers/server.cjs.map +0 -1
  198. package/dist/controllers/server.d.ts +0 -322
  199. package/dist/controllers/server.js +0 -624
  200. package/dist/controllers/server.js.map +0 -1
  201. package/dist/controllers/staking.cjs +0 -626
  202. package/dist/controllers/staking.cjs.map +0 -1
  203. package/dist/controllers/staking.d.ts +0 -457
  204. package/dist/controllers/staking.js +0 -602
  205. package/dist/controllers/staking.js.map +0 -1
  206. package/dist/core/__tests__/pollingManager.test.d.ts +0 -4
  207. package/dist/core/apiClient.cjs +0 -378
  208. package/dist/core/apiClient.cjs.map +0 -1
  209. package/dist/core/apiClient.d.ts +0 -286
  210. package/dist/core/apiClient.js +0 -359
  211. package/dist/core/apiClient.js.map +0 -1
  212. package/dist/core/generics.cjs +0 -417
  213. package/dist/core/generics.cjs.map +0 -1
  214. package/dist/core/generics.d.ts +0 -205
  215. package/dist/core/generics.js +0 -386
  216. package/dist/core/generics.js.map +0 -1
  217. package/dist/core/health.cjs +0 -289
  218. package/dist/core/health.cjs.map +0 -1
  219. package/dist/core/health.d.ts +0 -143
  220. package/dist/core/health.js +0 -265
  221. package/dist/core/health.js.map +0 -1
  222. package/dist/core/inMemoryNonceManager.cjs +0 -138
  223. package/dist/core/inMemoryNonceManager.cjs.map +0 -1
  224. package/dist/core/inMemoryNonceManager.d.ts +0 -69
  225. package/dist/core/inMemoryNonceManager.js +0 -114
  226. package/dist/core/inMemoryNonceManager.js.map +0 -1
  227. package/dist/core/nonceManager.cjs +0 -304
  228. package/dist/core/nonceManager.cjs.map +0 -1
  229. package/dist/core/nonceManager.d.ts +0 -116
  230. package/dist/core/nonceManager.js +0 -280
  231. package/dist/core/nonceManager.js.map +0 -1
  232. package/dist/core/pollingManager.cjs +0 -292
  233. package/dist/core/pollingManager.cjs.map +0 -1
  234. package/dist/core/pollingManager.d.ts +0 -120
  235. package/dist/core/pollingManager.js +0 -268
  236. package/dist/core/pollingManager.js.map +0 -1
  237. package/dist/core.cjs +0 -781
  238. package/dist/core.cjs.map +0 -1
  239. package/dist/core.d.ts +0 -496
  240. package/dist/core.js +0 -756
  241. package/dist/core.js.map +0 -1
  242. package/dist/diagnostics.cjs +0 -37
  243. package/dist/diagnostics.cjs.map +0 -1
  244. package/dist/diagnostics.d.ts +0 -24
  245. package/dist/diagnostics.js +0 -13
  246. package/dist/diagnostics.js.map +0 -1
  247. package/dist/diagnostics.test.d.ts +0 -1
  248. package/dist/generated/abi/DLPPerformanceImplementation.cjs +0 -1202
  249. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +0 -1
  250. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +0 -914
  251. package/dist/generated/abi/DLPPerformanceImplementation.js +0 -1178
  252. package/dist/generated/abi/DLPPerformanceImplementation.js.map +0 -1
  253. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +0 -1112
  254. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +0 -1
  255. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +0 -840
  256. package/dist/generated/abi/DLPRewardDeployerImplementation.js +0 -1088
  257. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +0 -1
  258. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +0 -612
  259. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +0 -1
  260. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +0 -451
  261. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +0 -588
  262. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +0 -1
  263. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +0 -939
  264. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +0 -1
  265. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +0 -705
  266. package/dist/generated/abi/DLPRewardSwapImplementation.js +0 -915
  267. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +0 -1
  268. package/dist/generated/abi/DLPRootImplementation.cjs +0 -1644
  269. package/dist/generated/abi/DLPRootImplementation.cjs.map +0 -1
  270. package/dist/generated/abi/DLPRootImplementation.d.ts +0 -1246
  271. package/dist/generated/abi/DLPRootImplementation.js +0 -1620
  272. package/dist/generated/abi/DLPRootImplementation.js.map +0 -1
  273. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +0 -985
  274. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +0 -1
  275. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +0 -735
  276. package/dist/generated/abi/DataLiquidityPoolImplementation.js +0 -961
  277. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +0 -1
  278. package/dist/generated/abi/SwapHelperImplementation.cjs +0 -976
  279. package/dist/generated/abi/SwapHelperImplementation.cjs.map +0 -1
  280. package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -728
  281. package/dist/generated/abi/SwapHelperImplementation.js +0 -952
  282. package/dist/generated/abi/SwapHelperImplementation.js.map +0 -1
  283. package/dist/generated/abi/TeePoolImplementation.cjs +0 -1313
  284. package/dist/generated/abi/TeePoolImplementation.cjs.map +0 -1
  285. package/dist/generated/abi/TeePoolImplementation.d.ts +0 -992
  286. package/dist/generated/abi/TeePoolImplementation.js +0 -1289
  287. package/dist/generated/abi/TeePoolImplementation.js.map +0 -1
  288. package/dist/generated/event-types.cjs +0 -17
  289. package/dist/generated/event-types.cjs.map +0 -1
  290. package/dist/generated/event-types.d.ts +0 -816
  291. package/dist/generated/event-types.js +0 -1
  292. package/dist/generated/event-types.js.map +0 -1
  293. package/dist/generated/eventRegistry.cjs +0 -4512
  294. package/dist/generated/eventRegistry.cjs.map +0 -1
  295. package/dist/generated/eventRegistry.d.ts +0 -14
  296. package/dist/generated/eventRegistry.js +0 -4487
  297. package/dist/generated/eventRegistry.js.map +0 -1
  298. package/dist/generated/server/server-exports.cjs +0 -45
  299. package/dist/generated/server/server-exports.cjs.map +0 -1
  300. package/dist/generated/server/server-exports.d.ts +0 -36
  301. package/dist/generated/server/server-exports.js +0 -19
  302. package/dist/generated/server/server-exports.js.map +0 -1
  303. package/dist/generated/server/server.cjs +0 -17
  304. package/dist/generated/server/server.cjs.map +0 -1
  305. package/dist/generated/server/server.d.ts +0 -907
  306. package/dist/generated/server/server.js +0 -1
  307. package/dist/generated/server/server.js.map +0 -1
  308. package/dist/generated/subgraph.cjs +0 -1440
  309. package/dist/generated/subgraph.cjs.map +0 -1
  310. package/dist/generated/subgraph.d.ts +0 -6113
  311. package/dist/generated/subgraph.js +0 -1404
  312. package/dist/generated/subgraph.js.map +0 -1
  313. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +0 -1
  314. package/dist/lib/redisAtomicStore.cjs +0 -201
  315. package/dist/lib/redisAtomicStore.cjs.map +0 -1
  316. package/dist/lib/redisAtomicStore.d.ts +0 -120
  317. package/dist/lib/redisAtomicStore.js +0 -177
  318. package/dist/lib/redisAtomicStore.js.map +0 -1
  319. package/dist/server/relayerHandler.cjs +0 -452
  320. package/dist/server/relayerHandler.cjs.map +0 -1
  321. package/dist/server/relayerHandler.d.ts +0 -69
  322. package/dist/server/relayerHandler.js +0 -428
  323. package/dist/server/relayerHandler.js.map +0 -1
  324. package/dist/tests/abi.test.d.ts +0 -1
  325. package/dist/tests/chains-definitions.test.d.ts +0 -1
  326. package/dist/tests/core-encryption.test.d.ts +0 -1
  327. package/dist/tests/core-extended.test.d.ts +0 -1
  328. package/dist/tests/core-generics-coverage.test.d.ts +0 -1
  329. package/dist/tests/coverage-boost.test.d.ts +0 -1
  330. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +0 -1
  331. package/dist/tests/data-addfile-permissions-schema.test.d.ts +0 -1
  332. package/dist/tests/data-additional-methods.test.d.ts +0 -1
  333. package/dist/tests/data-controller-edge-cases.test.d.ts +0 -1
  334. package/dist/tests/data-ipfs-gateways.test.d.ts +0 -1
  335. package/dist/tests/data-relayer.test.d.ts +0 -1
  336. package/dist/tests/data-schema-validation.test.d.ts +0 -1
  337. package/dist/tests/data-simple-methods.test.d.ts +0 -1
  338. package/dist/tests/data-upload-owner-validation.test.d.ts +0 -1
  339. package/dist/tests/data.test.d.ts +0 -1
  340. package/dist/tests/demo-integration.test.d.ts +0 -1
  341. package/dist/tests/demo-trusted-server-integration.test.d.ts +0 -1
  342. package/dist/tests/download-relayer.test.d.ts +0 -1
  343. package/dist/tests/dual-mode-permissions.test.d.ts +0 -1
  344. package/dist/tests/dual-mode-trusted-servers.test.d.ts +0 -1
  345. package/dist/tests/encryption-correct-implementation.test.d.ts +0 -1
  346. package/dist/tests/encryption-coverage.test.d.ts +0 -1
  347. package/dist/tests/encryption-edge-cases.test.d.ts +0 -1
  348. package/dist/tests/encryption-utils-updated.test.d.ts +0 -1
  349. package/dist/tests/errors-coverage.test.d.ts +0 -1
  350. package/dist/tests/factories/mockFactory.d.ts +0 -316
  351. package/dist/tests/fakes/FakeStorageManager.d.ts +0 -200
  352. package/dist/tests/fakes/FakeStorageManager.test.d.ts +0 -1
  353. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +0 -170
  354. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +0 -1
  355. package/dist/tests/fakes/fake-pgp-port.d.ts +0 -13
  356. package/dist/tests/grantValidation-edge-cases.test.d.ts +0 -1
  357. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +0 -1
  358. package/dist/tests/helper-methods.test.d.ts +0 -1
  359. package/dist/tests/helpers/typedMocks.d.ts +0 -64
  360. package/dist/tests/index-browser.test.d.ts +0 -1
  361. package/dist/tests/index-node.test.d.ts +0 -1
  362. package/dist/tests/index.test.d.ts +0 -1
  363. package/dist/tests/mocks/platformAdapter.d.ts +0 -12
  364. package/dist/tests/new-permissions-methods.test.d.ts +0 -1
  365. package/dist/tests/no-buffer-browser.test.d.ts +0 -1
  366. package/dist/tests/permissions-grantee.test.d.ts +0 -1
  367. package/dist/tests/permissions-revoke-relayer.test.d.ts +0 -1
  368. package/dist/tests/permissions-schema-validation.test.d.ts +0 -1
  369. package/dist/tests/permissions-server-files.test.d.ts +0 -1
  370. package/dist/tests/permissions-transaction-options.test.d.ts +0 -1
  371. package/dist/tests/permissions-trust-servers.test.d.ts +0 -1
  372. package/dist/tests/permissions.test.d.ts +0 -1
  373. package/dist/tests/personal.test.d.ts +0 -1
  374. package/dist/tests/platform-browser.test.d.ts +0 -1
  375. package/dist/tests/platform-crypto-expanded.test.d.ts +0 -1
  376. package/dist/tests/platform-crypto.test.d.ts +0 -1
  377. package/dist/tests/platform-index.test.d.ts +0 -1
  378. package/dist/tests/platform-node.test.d.ts +0 -1
  379. package/dist/tests/platform-shared-utils.test.d.ts +0 -1
  380. package/dist/tests/platform-updated.test.d.ts +0 -1
  381. package/dist/tests/protocol-additional-methods.test.d.ts +0 -1
  382. package/dist/tests/protocol.test.d.ts +0 -1
  383. package/dist/tests/read-only-mode.test.d.ts +0 -1
  384. package/dist/tests/relayer-integration.test.d.ts +0 -1
  385. package/dist/tests/relayer-unified.test.d.ts +0 -1
  386. package/dist/tests/schemas.test.d.ts +0 -1
  387. package/dist/tests/server-relayer-handler.test.d.ts +0 -1
  388. package/dist/tests/signatureFormatter.test.d.ts +0 -1
  389. package/dist/tests/staking.test.d.ts +0 -1
  390. package/dist/tests/trusted-server-queries.test.d.ts +0 -1
  391. package/dist/tests/typedDataConverter.test.d.ts +0 -1
  392. package/dist/tests/types-contracts.test.d.ts +0 -1
  393. package/dist/tests/types-data.test.d.ts +0 -1
  394. package/dist/tests/types-external-apis.test.d.ts +0 -1
  395. package/dist/tests/types-generics.test.d.ts +0 -1
  396. package/dist/tests/types-permissions.test.d.ts +0 -1
  397. package/dist/tests/types-upload-params.test.d.ts +0 -1
  398. package/dist/tests/types.test.d.ts +0 -1
  399. package/dist/tests/utils-formatters.test.d.ts +0 -1
  400. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +0 -1
  401. package/dist/tests/utils-grantFiles-validation.test.d.ts +0 -1
  402. package/dist/tests/utils-grantFiles.test.d.ts +0 -1
  403. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +0 -1
  404. package/dist/tests/utils-grants.test.d.ts +0 -1
  405. package/dist/tests/utils-ipfs-additional.test.d.ts +0 -1
  406. package/dist/tests/utils-ipfs.test.d.ts +0 -4
  407. package/dist/tests/utils-schemaValidation.test.d.ts +0 -1
  408. package/dist/tests/vana.test.d.ts +0 -1
  409. package/dist/tests/wallet-crypto-compatibility.test.d.ts +0 -1
  410. package/dist/types/atomicStore.cjs.map +0 -1
  411. package/dist/types/atomicStore.d.ts +0 -236
  412. package/dist/types/atomicStore.js +0 -7
  413. package/dist/types/atomicStore.js.map +0 -1
  414. package/dist/types/blockchain.cjs +0 -17
  415. package/dist/types/blockchain.cjs.map +0 -1
  416. package/dist/types/blockchain.d.ts +0 -85
  417. package/dist/types/blockchain.js +0 -1
  418. package/dist/types/blockchain.js.map +0 -1
  419. package/dist/types/controller-context.cjs +0 -17
  420. package/dist/types/controller-context.cjs.map +0 -1
  421. package/dist/types/controller-context.d.ts +0 -68
  422. package/dist/types/controller-context.js +0 -1
  423. package/dist/types/controller-context.js.map +0 -1
  424. package/dist/types/data.cjs +0 -17
  425. package/dist/types/data.cjs.map +0 -1
  426. package/dist/types/data.d.ts +0 -763
  427. package/dist/types/data.js +0 -1
  428. package/dist/types/data.js.map +0 -1
  429. package/dist/types/external-apis.cjs +0 -61
  430. package/dist/types/external-apis.cjs.map +0 -1
  431. package/dist/types/external-apis.d.ts +0 -184
  432. package/dist/types/external-apis.js +0 -34
  433. package/dist/types/external-apis.js.map +0 -1
  434. package/dist/types/generics.cjs +0 -17
  435. package/dist/types/generics.cjs.map +0 -1
  436. package/dist/types/generics.d.ts +0 -518
  437. package/dist/types/generics.js +0 -1
  438. package/dist/types/generics.js.map +0 -1
  439. package/dist/types/operationStore.cjs +0 -17
  440. package/dist/types/operationStore.cjs.map +0 -1
  441. package/dist/types/operationStore.d.ts +0 -171
  442. package/dist/types/operationStore.js +0 -1
  443. package/dist/types/operationStore.js.map +0 -1
  444. package/dist/types/operations.cjs +0 -53
  445. package/dist/types/operations.cjs.map +0 -1
  446. package/dist/types/operations.d.ts +0 -204
  447. package/dist/types/operations.js +0 -26
  448. package/dist/types/operations.js.map +0 -1
  449. package/dist/types/options.cjs +0 -17
  450. package/dist/types/options.cjs.map +0 -1
  451. package/dist/types/options.d.ts +0 -308
  452. package/dist/types/options.js +0 -1
  453. package/dist/types/options.js.map +0 -1
  454. package/dist/types/permissions.cjs +0 -17
  455. package/dist/types/permissions.cjs.map +0 -1
  456. package/dist/types/permissions.d.ts +0 -955
  457. package/dist/types/permissions.js +0 -1
  458. package/dist/types/permissions.js.map +0 -1
  459. package/dist/types/personal.cjs +0 -17
  460. package/dist/types/personal.cjs.map +0 -1
  461. package/dist/types/personal.d.ts +0 -174
  462. package/dist/types/personal.js +0 -1
  463. package/dist/types/personal.js.map +0 -1
  464. package/dist/types/relayer.cjs +0 -17
  465. package/dist/types/relayer.cjs.map +0 -1
  466. package/dist/types/relayer.d.ts +0 -552
  467. package/dist/types/relayer.js +0 -1
  468. package/dist/types/relayer.js.map +0 -1
  469. package/dist/types/transactionResults.cjs +0 -17
  470. package/dist/types/transactionResults.cjs.map +0 -1
  471. package/dist/types/transactionResults.d.ts +0 -193
  472. package/dist/types/transactionResults.js +0 -1
  473. package/dist/types/transactionResults.js.map +0 -1
  474. package/dist/types/utils.cjs +0 -17
  475. package/dist/types/utils.cjs.map +0 -1
  476. package/dist/types/utils.d.ts +0 -771
  477. package/dist/types/utils.js +0 -1
  478. package/dist/types/utils.js.map +0 -1
  479. package/dist/utils/__tests__/chainQuery.test.d.ts +0 -1
  480. package/dist/utils/__tests__/parseTransaction.test.d.ts +0 -1
  481. package/dist/utils/__tests__/pojo-serialization.test.d.ts +0 -1
  482. package/dist/utils/__tests__/signatureCache.test.d.ts +0 -1
  483. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +0 -4
  484. package/dist/utils/__tests__/subgraphPagination.test.d.ts +0 -4
  485. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +0 -1
  486. package/dist/utils/__tests__/transactionHelpers.test.d.ts +0 -1
  487. package/dist/utils/__tests__/urlResolver.test.d.ts +0 -4
  488. package/dist/utils/blockchain/registry.cjs +0 -81
  489. package/dist/utils/blockchain/registry.cjs.map +0 -1
  490. package/dist/utils/blockchain/registry.d.ts +0 -32
  491. package/dist/utils/blockchain/registry.js +0 -56
  492. package/dist/utils/blockchain/registry.js.map +0 -1
  493. package/dist/utils/blockchain/registry.test.d.ts +0 -1
  494. package/dist/utils/chainQuery.cjs +0 -107
  495. package/dist/utils/chainQuery.cjs.map +0 -1
  496. package/dist/utils/chainQuery.d.ts +0 -31
  497. package/dist/utils/chainQuery.js +0 -82
  498. package/dist/utils/chainQuery.js.map +0 -1
  499. package/dist/utils/download.cjs +0 -69
  500. package/dist/utils/download.cjs.map +0 -1
  501. package/dist/utils/download.d.ts +0 -40
  502. package/dist/utils/download.js +0 -45
  503. package/dist/utils/download.js.map +0 -1
  504. package/dist/utils/encryption.cjs +0 -176
  505. package/dist/utils/encryption.cjs.map +0 -1
  506. package/dist/utils/encryption.d.ts +0 -271
  507. package/dist/utils/encryption.js +0 -142
  508. package/dist/utils/encryption.js.map +0 -1
  509. package/dist/utils/formatters.cjs +0 -55
  510. package/dist/utils/formatters.cjs.map +0 -1
  511. package/dist/utils/formatters.d.ts +0 -118
  512. package/dist/utils/formatters.js +0 -28
  513. package/dist/utils/formatters.js.map +0 -1
  514. package/dist/utils/grantFiles.cjs +0 -181
  515. package/dist/utils/grantFiles.cjs.map +0 -1
  516. package/dist/utils/grantFiles.d.ts +0 -172
  517. package/dist/utils/grantFiles.js +0 -143
  518. package/dist/utils/grantFiles.js.map +0 -1
  519. package/dist/utils/grantValidation.cjs +0 -243
  520. package/dist/utils/grantValidation.cjs.map +0 -1
  521. package/dist/utils/grantValidation.d.ts +0 -226
  522. package/dist/utils/grantValidation.js +0 -201
  523. package/dist/utils/grantValidation.js.map +0 -1
  524. package/dist/utils/grants.cjs +0 -108
  525. package/dist/utils/grants.cjs.map +0 -1
  526. package/dist/utils/grants.d.ts +0 -148
  527. package/dist/utils/grants.js +0 -82
  528. package/dist/utils/grants.js.map +0 -1
  529. package/dist/utils/ipfs.cjs +0 -128
  530. package/dist/utils/ipfs.cjs.map +0 -1
  531. package/dist/utils/ipfs.d.ts +0 -88
  532. package/dist/utils/ipfs.js +0 -97
  533. package/dist/utils/ipfs.js.map +0 -1
  534. package/dist/utils/multicall.cjs +0 -233
  535. package/dist/utils/multicall.cjs.map +0 -1
  536. package/dist/utils/multicall.d.ts +0 -126
  537. package/dist/utils/multicall.js +0 -208
  538. package/dist/utils/multicall.js.map +0 -1
  539. package/dist/utils/parseTransactionPojo.cjs +0 -87
  540. package/dist/utils/parseTransactionPojo.cjs.map +0 -1
  541. package/dist/utils/parseTransactionPojo.d.ts +0 -31
  542. package/dist/utils/parseTransactionPojo.js +0 -63
  543. package/dist/utils/parseTransactionPojo.js.map +0 -1
  544. package/dist/utils/schemaValidation.cjs +0 -258
  545. package/dist/utils/schemaValidation.cjs.map +0 -1
  546. package/dist/utils/schemaValidation.d.ts +0 -168
  547. package/dist/utils/schemaValidation.js +0 -219
  548. package/dist/utils/schemaValidation.js.map +0 -1
  549. package/dist/utils/signatureCache.cjs +0 -192
  550. package/dist/utils/signatureCache.cjs.map +0 -1
  551. package/dist/utils/signatureCache.d.ts +0 -172
  552. package/dist/utils/signatureCache.js +0 -167
  553. package/dist/utils/signatureCache.js.map +0 -1
  554. package/dist/utils/signatureFormatter.cjs +0 -42
  555. package/dist/utils/signatureFormatter.cjs.map +0 -1
  556. package/dist/utils/signatureFormatter.d.ts +0 -36
  557. package/dist/utils/signatureFormatter.js +0 -18
  558. package/dist/utils/signatureFormatter.js.map +0 -1
  559. package/dist/utils/subgraphConsistency.cjs +0 -184
  560. package/dist/utils/subgraphConsistency.cjs.map +0 -1
  561. package/dist/utils/subgraphConsistency.d.ts +0 -65
  562. package/dist/utils/subgraphConsistency.js +0 -155
  563. package/dist/utils/subgraphConsistency.js.map +0 -1
  564. package/dist/utils/subgraphMetaCache.cjs +0 -101
  565. package/dist/utils/subgraphMetaCache.cjs.map +0 -1
  566. package/dist/utils/subgraphMetaCache.d.ts +0 -56
  567. package/dist/utils/subgraphMetaCache.js +0 -76
  568. package/dist/utils/subgraphMetaCache.js.map +0 -1
  569. package/dist/utils/subgraphPagination.cjs +0 -104
  570. package/dist/utils/subgraphPagination.cjs.map +0 -1
  571. package/dist/utils/subgraphPagination.d.ts +0 -78
  572. package/dist/utils/subgraphPagination.js +0 -78
  573. package/dist/utils/subgraphPagination.js.map +0 -1
  574. package/dist/utils/tests/multicall.test.d.ts +0 -1
  575. package/dist/utils/transactionHelpers.cjs +0 -54
  576. package/dist/utils/transactionHelpers.cjs.map +0 -1
  577. package/dist/utils/transactionHelpers.d.ts +0 -80
  578. package/dist/utils/transactionHelpers.js +0 -29
  579. package/dist/utils/transactionHelpers.js.map +0 -1
  580. package/dist/utils/typeGuards.cjs +0 -109
  581. package/dist/utils/typeGuards.cjs.map +0 -1
  582. package/dist/utils/typeGuards.d.ts +0 -138
  583. package/dist/utils/typeGuards.js +0 -74
  584. package/dist/utils/typeGuards.js.map +0 -1
  585. package/dist/utils/typedDataConverter.cjs +0 -43
  586. package/dist/utils/typedDataConverter.cjs.map +0 -1
  587. package/dist/utils/typedDataConverter.d.ts +0 -46
  588. package/dist/utils/typedDataConverter.js +0 -19
  589. package/dist/utils/typedDataConverter.js.map +0 -1
  590. package/dist/utils/urlResolver.cjs +0 -62
  591. package/dist/utils/urlResolver.cjs.map +0 -1
  592. package/dist/utils/urlResolver.d.ts +0 -56
  593. package/dist/utils/urlResolver.js +0 -37
  594. package/dist/utils/urlResolver.js.map +0 -1
  595. package/dist/utils/wallet.cjs +0 -63
  596. package/dist/utils/wallet.cjs.map +0 -1
  597. package/dist/utils/wallet.d.ts +0 -94
  598. package/dist/utils/wallet.js +0 -37
  599. package/dist/utils/wallet.js.map +0 -1
  600. package/dist/utils/withEvents.cjs +0 -44
  601. package/dist/utils/withEvents.cjs.map +0 -1
  602. package/dist/utils/withEvents.d.ts +0 -56
  603. package/dist/utils/withEvents.js +0 -18
  604. package/dist/utils/withEvents.js.map +0 -1
  605. /package/dist/{__tests__/waitForTransactionEvents.test.d.ts → auth/pkce.test.d.ts} +0 -0
  606. /package/dist/{client/__tests__/enhancedResponse.test.d.ts → auth/token-store.test.d.ts} +0 -0
  607. /package/dist/{controllers/__tests__/operations.processQueue.test.d.ts → auth/web3-signed.test.d.ts} +0 -0
  608. /package/dist/{controllers/__tests__/schemas-edge-cases.test.d.ts → crypto/envelope/openpgp.test.d.ts} +0 -0
  609. /package/dist/{controllers/data-error-handling.test.d.ts → crypto/keys/derive.test.d.ts} +0 -0
  610. /package/dist/{tests/errors.test.d.ts → errors.test.d.ts} +0 -0
  611. /package/dist/{controllers/server-additional.test.d.ts → protocol/data-file.test.d.ts} +0 -0
  612. /package/dist/{core/__tests__/health.test.d.ts → protocol/eip712.test.d.ts} +0 -0
  613. /package/dist/{core/__tests__/inMemoryNonceManager.test.d.ts → protocol/gateway.test.d.ts} +0 -0
  614. /package/dist/{core/__tests__/nonceManager.test.d.ts → protocol/scopes.test.d.ts} +0 -0
  615. /package/dist/{core/core.test.d.ts → storage/tests/defaultStorage.test.d.ts} +0 -0
  616. /package/dist/{core/tests/apiClient.test.d.ts → storage/tests/r2Storage.test.d.ts} +0 -0
  617. /package/dist/{core/tests/client.test.d.ts → storage/tests/vanaStorage.test.d.ts} +0 -0
  618. /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":[]}