@opendatalabs/vana-sdk 2.3.0 → 3.0.1-canary.b068ac6

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