@agirails/sdk 2.5.3 → 2.5.5

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 (169) hide show
  1. package/dist/ACTPClient.d.ts +18 -0
  2. package/dist/ACTPClient.d.ts.map +1 -1
  3. package/dist/ACTPClient.js +72 -23
  4. package/dist/ACTPClient.js.map +1 -1
  5. package/dist/adapters/BasicAdapter.d.ts +15 -0
  6. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  7. package/dist/adapters/BasicAdapter.js +33 -4
  8. package/dist/adapters/BasicAdapter.js.map +1 -1
  9. package/dist/adapters/StandardAdapter.d.ts +20 -3
  10. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  11. package/dist/adapters/StandardAdapter.js +90 -12
  12. package/dist/adapters/StandardAdapter.js.map +1 -1
  13. package/dist/cli/commands/publish.js +16 -4
  14. package/dist/cli/commands/publish.js.map +1 -1
  15. package/dist/cli/commands/register.js +16 -4
  16. package/dist/cli/commands/register.js.map +1 -1
  17. package/dist/cli/commands/tx.js +31 -3
  18. package/dist/cli/commands/tx.js.map +1 -1
  19. package/dist/config/networks.d.ts +10 -2
  20. package/dist/config/networks.d.ts.map +1 -1
  21. package/dist/config/networks.js +31 -22
  22. package/dist/config/networks.js.map +1 -1
  23. package/dist/level0/request.d.ts.map +1 -1
  24. package/dist/level0/request.js +2 -1
  25. package/dist/level0/request.js.map +1 -1
  26. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  27. package/dist/runtime/BlockchainRuntime.js +11 -5
  28. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  29. package/dist/utils/IPFSClient.d.ts +3 -1
  30. package/dist/utils/IPFSClient.d.ts.map +1 -1
  31. package/dist/utils/IPFSClient.js +27 -7
  32. package/dist/utils/IPFSClient.js.map +1 -1
  33. package/dist/wallet/AutoWalletProvider.d.ts +11 -1
  34. package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
  35. package/dist/wallet/AutoWalletProvider.js +84 -19
  36. package/dist/wallet/AutoWalletProvider.js.map +1 -1
  37. package/dist/wallet/IWalletProvider.d.ts +34 -0
  38. package/dist/wallet/IWalletProvider.d.ts.map +1 -1
  39. package/dist/wallet/SmartWalletRouter.d.ts +128 -0
  40. package/dist/wallet/SmartWalletRouter.d.ts.map +1 -0
  41. package/dist/wallet/SmartWalletRouter.js +248 -0
  42. package/dist/wallet/SmartWalletRouter.js.map +1 -0
  43. package/dist/wallet/aa/DualNonceManager.d.ts +26 -1
  44. package/dist/wallet/aa/DualNonceManager.d.ts.map +1 -1
  45. package/dist/wallet/aa/DualNonceManager.js +140 -6
  46. package/dist/wallet/aa/DualNonceManager.js.map +1 -1
  47. package/package.json +3 -6
  48. package/src/ACTPClient.ts +0 -1579
  49. package/src/abi/ACTPKernel.json +0 -1356
  50. package/src/abi/AgentRegistry.json +0 -915
  51. package/src/abi/ERC20.json +0 -40
  52. package/src/abi/EscrowVault.json +0 -134
  53. package/src/abi/IdentityRegistry.json +0 -316
  54. package/src/adapters/AdapterRegistry.ts +0 -173
  55. package/src/adapters/AdapterRouter.ts +0 -416
  56. package/src/adapters/BaseAdapter.ts +0 -498
  57. package/src/adapters/BasicAdapter.ts +0 -514
  58. package/src/adapters/IAdapter.ts +0 -292
  59. package/src/adapters/StandardAdapter.ts +0 -555
  60. package/src/adapters/X402Adapter.ts +0 -731
  61. package/src/adapters/index.ts +0 -60
  62. package/src/builders/DeliveryProofBuilder.ts +0 -327
  63. package/src/builders/QuoteBuilder.ts +0 -483
  64. package/src/builders/index.ts +0 -17
  65. package/src/cli/commands/balance.ts +0 -110
  66. package/src/cli/commands/batch.ts +0 -487
  67. package/src/cli/commands/config.ts +0 -231
  68. package/src/cli/commands/deploy-check.ts +0 -364
  69. package/src/cli/commands/deploy-env.ts +0 -120
  70. package/src/cli/commands/diff.ts +0 -141
  71. package/src/cli/commands/init.ts +0 -469
  72. package/src/cli/commands/mint.ts +0 -116
  73. package/src/cli/commands/pay.ts +0 -113
  74. package/src/cli/commands/publish.ts +0 -475
  75. package/src/cli/commands/pull.ts +0 -124
  76. package/src/cli/commands/register.ts +0 -247
  77. package/src/cli/commands/simulate.ts +0 -345
  78. package/src/cli/commands/time.ts +0 -302
  79. package/src/cli/commands/tx.ts +0 -448
  80. package/src/cli/commands/watch.ts +0 -211
  81. package/src/cli/index.ts +0 -134
  82. package/src/cli/utils/client.ts +0 -252
  83. package/src/cli/utils/config.ts +0 -389
  84. package/src/cli/utils/output.ts +0 -465
  85. package/src/cli/utils/wallet.ts +0 -109
  86. package/src/config/agirailsmd.ts +0 -262
  87. package/src/config/networks.ts +0 -275
  88. package/src/config/pendingPublish.ts +0 -237
  89. package/src/config/publishPipeline.ts +0 -359
  90. package/src/config/syncOperations.ts +0 -279
  91. package/src/erc8004/ERC8004Bridge.ts +0 -462
  92. package/src/erc8004/ReputationReporter.ts +0 -468
  93. package/src/erc8004/index.ts +0 -61
  94. package/src/errors/index.ts +0 -427
  95. package/src/index.ts +0 -364
  96. package/src/level0/Provider.ts +0 -117
  97. package/src/level0/ServiceDirectory.ts +0 -131
  98. package/src/level0/index.ts +0 -10
  99. package/src/level0/provide.ts +0 -132
  100. package/src/level0/request.ts +0 -432
  101. package/src/level1/Agent.ts +0 -1426
  102. package/src/level1/index.ts +0 -10
  103. package/src/level1/pricing/PriceCalculator.ts +0 -255
  104. package/src/level1/pricing/PricingStrategy.ts +0 -198
  105. package/src/level1/types/Job.ts +0 -179
  106. package/src/level1/types/Options.ts +0 -291
  107. package/src/level1/types/index.ts +0 -8
  108. package/src/protocol/ACTPKernel.ts +0 -808
  109. package/src/protocol/AgentRegistry.ts +0 -559
  110. package/src/protocol/DIDManager.ts +0 -629
  111. package/src/protocol/DIDResolver.ts +0 -554
  112. package/src/protocol/EASHelper.ts +0 -378
  113. package/src/protocol/EscrowVault.ts +0 -255
  114. package/src/protocol/EventMonitor.ts +0 -204
  115. package/src/protocol/MessageSigner.ts +0 -510
  116. package/src/protocol/ProofGenerator.ts +0 -339
  117. package/src/protocol/QuoteBuilder.ts +0 -15
  118. package/src/registry/AgentRegistryClient.ts +0 -202
  119. package/src/runtime/BlockchainRuntime.ts +0 -1015
  120. package/src/runtime/IACTPRuntime.ts +0 -306
  121. package/src/runtime/MockRuntime.ts +0 -1298
  122. package/src/runtime/MockStateManager.ts +0 -577
  123. package/src/runtime/index.ts +0 -25
  124. package/src/runtime/types/MockState.ts +0 -237
  125. package/src/storage/ArchiveBundleBuilder.ts +0 -561
  126. package/src/storage/ArweaveClient.ts +0 -946
  127. package/src/storage/FilebaseClient.ts +0 -790
  128. package/src/storage/index.ts +0 -96
  129. package/src/storage/types.ts +0 -348
  130. package/src/types/adapter.ts +0 -310
  131. package/src/types/agent.ts +0 -79
  132. package/src/types/did.ts +0 -223
  133. package/src/types/eip712.ts +0 -175
  134. package/src/types/erc8004.ts +0 -293
  135. package/src/types/escrow.ts +0 -27
  136. package/src/types/index.ts +0 -17
  137. package/src/types/message.ts +0 -145
  138. package/src/types/state.ts +0 -87
  139. package/src/types/transaction.ts +0 -69
  140. package/src/types/x402.ts +0 -251
  141. package/src/utils/ErrorRecoveryGuide.ts +0 -676
  142. package/src/utils/Helpers.ts +0 -688
  143. package/src/utils/IPFSClient.ts +0 -368
  144. package/src/utils/Logger.ts +0 -484
  145. package/src/utils/NonceManager.ts +0 -591
  146. package/src/utils/RateLimiter.ts +0 -534
  147. package/src/utils/ReceivedNonceTracker.ts +0 -567
  148. package/src/utils/SDKLifecycle.ts +0 -416
  149. package/src/utils/SecureNonce.ts +0 -78
  150. package/src/utils/Semaphore.ts +0 -276
  151. package/src/utils/UsedAttestationTracker.ts +0 -385
  152. package/src/utils/canonicalJson.ts +0 -38
  153. package/src/utils/circuitBreaker.ts +0 -324
  154. package/src/utils/computeTypeHash.ts +0 -48
  155. package/src/utils/fsSafe.ts +0 -80
  156. package/src/utils/index.ts +0 -80
  157. package/src/utils/retry.ts +0 -364
  158. package/src/utils/security.ts +0 -418
  159. package/src/utils/validation.ts +0 -540
  160. package/src/wallet/AutoWalletProvider.ts +0 -299
  161. package/src/wallet/EOAWalletProvider.ts +0 -69
  162. package/src/wallet/IWalletProvider.ts +0 -135
  163. package/src/wallet/aa/BundlerClient.ts +0 -274
  164. package/src/wallet/aa/DualNonceManager.ts +0 -173
  165. package/src/wallet/aa/PaymasterClient.ts +0 -174
  166. package/src/wallet/aa/TransactionBatcher.ts +0 -353
  167. package/src/wallet/aa/UserOpBuilder.ts +0 -246
  168. package/src/wallet/aa/constants.ts +0 -60
  169. package/src/wallet/keystore.ts +0 -240
@@ -45,7 +45,7 @@ class AutoWalletProvider {
45
45
  backupUrl: config.paymaster.backupUrl,
46
46
  chainId: config.chainId,
47
47
  });
48
- this.nonceManager = new DualNonceManager_1.DualNonceManager(config.provider, smartWalletAddress, config.actpKernelAddress);
48
+ this.nonceManager = new DualNonceManager_1.DualNonceManager(config.provider, smartWalletAddress, config.actpKernelAddress, config.actpKernelDeploymentBlock);
49
49
  }
50
50
  /**
51
51
  * Factory method — computes counterfactual address and checks deployment.
@@ -118,24 +118,89 @@ class AutoWalletProvider {
118
118
  */
119
119
  async payACTPBatched(params, prependCalls) {
120
120
  return this.nonceManager.enqueue(async ({ entryPointNonce, actpNonce }) => {
121
- const batch = (0, TransactionBatcher_1.buildACTPPayBatch)({
122
- ...params,
123
- actpNonce,
124
- });
125
- // Combine activation calls (if any) with payment calls
126
- const allCalls = prependCalls && prependCalls.length > 0
127
- ? [...prependCalls, ...batch.calls]
128
- : batch.calls;
129
- const receipt = await this.submitUserOp(allCalls, entryPointNonce);
130
- return {
131
- result: {
132
- txId: batch.txId,
133
- hash: receipt.hash,
134
- success: receipt.success,
135
- },
136
- success: receipt.success,
137
- };
138
- }, true // Increment ACTP nonce on success
121
+ const MAX_NONCE_BUMPS = 12;
122
+ let candidateNonce = actpNonce;
123
+ for (let i = 0; i <= MAX_NONCE_BUMPS; i++) {
124
+ const batch = (0, TransactionBatcher_1.buildACTPPayBatch)({
125
+ ...params,
126
+ actpNonce: candidateNonce,
127
+ });
128
+ // Combine activation calls (if any) with payment calls
129
+ const allCalls = prependCalls && prependCalls.length > 0
130
+ ? [...prependCalls, ...batch.calls]
131
+ : batch.calls;
132
+ try {
133
+ const receipt = await this.submitUserOp(allCalls, entryPointNonce);
134
+ if (!receipt.success) {
135
+ const failed = {
136
+ result: {
137
+ txId: batch.txId,
138
+ hash: receipt.hash,
139
+ success: false,
140
+ },
141
+ success: false,
142
+ };
143
+ return failed;
144
+ }
145
+ // Keep local nonce cache aligned with the nonce that actually succeeded.
146
+ this.nonceManager.setCachedActpNonce(candidateNonce + 1n);
147
+ const succeeded = {
148
+ result: {
149
+ txId: batch.txId,
150
+ hash: receipt.hash,
151
+ success: receipt.success,
152
+ },
153
+ success: receipt.success,
154
+ };
155
+ return succeeded;
156
+ }
157
+ catch (error) {
158
+ const message = error instanceof Error ? error.message : String(error);
159
+ // Bundlers may return either plain revert text or ABI-encoded revert data.
160
+ const nonceCollision = /Escrow ID already used/i.test(message)
161
+ || /457363726f7720494420616c72656164792075736564/i.test(message);
162
+ if (!nonceCollision || i === MAX_NONCE_BUMPS) {
163
+ throw error;
164
+ }
165
+ candidateNonce += 1n;
166
+ Logger_1.sdkLogger.warn('ACTP nonce collision detected during batched pay; retrying with incremented nonce', {
167
+ nextActpNonce: candidateNonce.toString(),
168
+ });
169
+ }
170
+ }
171
+ throw new Error('Unable to submit batched ACTP payment after nonce retries');
172
+ }, false // payACTPBatched controls ACTP nonce cache explicitly
173
+ );
174
+ }
175
+ /**
176
+ * Create an ACTP transaction via Smart Wallet (without escrow linking).
177
+ *
178
+ * Encodes just ACTPKernel.createTransaction() as a single-call UserOp.
179
+ * Pre-computes the txId using the same keccak256 formula as the contract.
180
+ * Manages ACTP nonce inside the mutex queue for concurrent safety.
181
+ */
182
+ async createACTPTransaction(params) {
183
+ const kernelIface = new ethers_1.ethers.Interface([
184
+ 'function createTransaction(address provider, address requester, uint256 amount, uint256 deadline, uint256 disputeWindow, bytes32 serviceHash, uint256 agentId)',
185
+ ]);
186
+ return this.nonceManager.enqueue(async ({ entryPointNonce, actpNonce }) => {
187
+ const txId = (0, TransactionBatcher_1.computeTransactionId)(params.requester, params.provider, params.amount, params.serviceHash, actpNonce);
188
+ const createTxData = kernelIface.encodeFunctionData('createTransaction', [
189
+ params.provider,
190
+ params.requester,
191
+ BigInt(params.amount),
192
+ params.deadline,
193
+ params.disputeWindow,
194
+ params.serviceHash,
195
+ BigInt(params.agentId || '0'),
196
+ ]);
197
+ const calls = [
198
+ { target: params.contracts.actpKernel, value: 0n, data: createTxData },
199
+ ];
200
+ const receipt = await this.submitUserOp(calls, entryPointNonce);
201
+ const result = { txId, receipt };
202
+ return { result, success: receipt.success };
203
+ }, true // createTransaction increments ACTP nonce
139
204
  );
140
205
  }
141
206
  // ==========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"AutoWalletProvider.js","sourceRoot":"","sources":["../../src/wallet/AutoWalletProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoWalletProvider.js","sourceRoot":"","sources":["../../src/wallet/AutoWalletProvider.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,30 @@ export interface BatchedPayResult {
58
58
  /** Whether the UserOp succeeded */
59
59
  success: boolean;
60
60
  }
61
+ /**
62
+ * Parameters for creating an ACTP transaction via Smart Wallet (without escrow).
63
+ */
64
+ export interface CreateACTPTransactionParams {
65
+ provider: string;
66
+ requester: string;
67
+ amount: string;
68
+ deadline: number;
69
+ disputeWindow: number;
70
+ serviceHash: string;
71
+ agentId: string;
72
+ contracts: {
73
+ actpKernel: string;
74
+ };
75
+ }
76
+ /**
77
+ * Result of creating an ACTP transaction via Smart Wallet.
78
+ */
79
+ export interface CreateACTPTransactionResult {
80
+ /** Pre-computed ACTP transaction ID (bytes32) */
81
+ txId: string;
82
+ /** Transaction receipt */
83
+ receipt: TransactionReceipt;
84
+ }
61
85
  /**
62
86
  * Parameters for batched ACTP payment.
63
87
  */
@@ -113,5 +137,15 @@ export interface IWalletProvider {
113
137
  * @returns undefined if batched payments are not supported.
114
138
  */
115
139
  payACTPBatched?(params: BatchedPayParams, prependCalls?: import('./aa/constants').SmartWalletCall[]): Promise<BatchedPayResult>;
140
+ /**
141
+ * Create an ACTP transaction via Smart Wallet (without escrow linking).
142
+ *
143
+ * Only available on AA wallets (supportsBatching: true).
144
+ * Handles ACTP nonce management internally via the DualNonceManager mutex.
145
+ *
146
+ * @param params - Transaction creation parameters
147
+ * @returns Pre-computed txId and transaction receipt
148
+ */
149
+ createACTPTransaction?(params: CreateACTPTransactionParams): Promise<CreateACTPTransactionResult>;
116
150
  }
117
151
  //# sourceMappingURL=IWalletProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IWalletProvider.d.ts","sourceRoot":"","sources":["../../src/wallet/IWalletProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAMD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,IAAI,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErE;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE7E;;OAEG;IACH,aAAa,IAAI,UAAU,CAAC;IAE5B;;;;;;;;;OASG;IACH,cAAc,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjI"}
1
+ {"version":3,"file":"IWalletProvider.d.ts","sourceRoot":"","sources":["../../src/wallet/IWalletProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAMD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,IAAI,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErE;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE7E;;OAEG;IACH,aAAa,IAAI,UAAU,CAAC;IAE5B;;;;;;;;;OASG;IACH,cAAc,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEhI;;;;;;;;OAQG;IACH,qBAAqB,CAAC,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACnG"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * SmartWalletRouter - Shared utility for routing state transitions through Smart Wallet.
3
+ *
4
+ * Centralizes the logic for encoding ACTPKernel contract calls as TransactionRequests,
5
+ * validating release preconditions, and verifying attestations. Used by BasicAdapter,
6
+ * StandardAdapter, and ACTPClient to avoid code triplication.
7
+ *
8
+ * @module wallet/SmartWalletRouter
9
+ */
10
+ import { IWalletProvider, TransactionRequest, TransactionReceipt } from './IWalletProvider';
11
+ import { IACTPRuntime } from '../runtime/IACTPRuntime';
12
+ import { EASHelper } from '../protocol/EASHelper';
13
+ import type { MockTransaction } from '../runtime/types/MockState';
14
+ /**
15
+ * Contract addresses needed for encoding Smart Wallet calls.
16
+ */
17
+ export interface SmartWalletContractAddresses {
18
+ usdc: string;
19
+ actpKernel: string;
20
+ escrowVault: string;
21
+ }
22
+ /**
23
+ * SmartWalletRouter centralizes Smart Wallet routing logic.
24
+ *
25
+ * When a wallet provider with batched support is available (ERC-4337 Smart Wallet),
26
+ * state transitions must be sent as UserOps through the wallet provider so that
27
+ * msg.sender equals the Smart Wallet address (not the EOA signer).
28
+ */
29
+ export declare class SmartWalletRouter {
30
+ private readonly walletProvider;
31
+ private readonly contractAddresses;
32
+ private readonly runtime;
33
+ private readonly easHelper?;
34
+ constructor(walletProvider: IWalletProvider, contractAddresses: SmartWalletContractAddresses, runtime: IACTPRuntime, easHelper?: EASHelper | undefined);
35
+ /**
36
+ * Check if state transitions should route through the wallet provider.
37
+ * True when walletProvider supports batching (i.e., is a Smart Wallet).
38
+ */
39
+ shouldRoute(): boolean;
40
+ /**
41
+ * Encode a transitionState call as a TransactionRequest.
42
+ */
43
+ encodeTransitionStateTx(txId: string, stateValue: number, proof?: string): TransactionRequest;
44
+ /**
45
+ * Encode a SETTLED state transition as a TransactionRequest.
46
+ * Mirrors BlockchainRuntime.releaseEscrow() secure settlement flow.
47
+ */
48
+ encodeSettleTx(txId: string): TransactionRequest;
49
+ /**
50
+ * Send a state transition through the wallet provider and check the receipt.
51
+ *
52
+ * @param txId - Transaction ID
53
+ * @param stateValue - Target state value (from TransactionStateValue enum)
54
+ * @param proof - Optional proof data
55
+ * @param label - Human-readable label for error messages (e.g., "startWork", "deliver")
56
+ * @returns Transaction receipt
57
+ */
58
+ sendTransition(txId: string, stateValue: number, proof?: string, label?: string): Promise<TransactionReceipt>;
59
+ /**
60
+ * Send a SETTLED transition through the wallet provider.
61
+ *
62
+ * @param txId - Transaction ID
63
+ * @returns Transaction receipt
64
+ */
65
+ sendSettle(txId: string): Promise<TransactionReceipt>;
66
+ /**
67
+ * Send a linkEscrow call through the wallet provider as a batched UserOp.
68
+ *
69
+ * Encodes USDC.approve(escrowVault, amount) + ACTPKernel.linkEscrow(txId, escrowVault, txId)
70
+ * and submits them as a single atomic batch.
71
+ *
72
+ * @param txId - Transaction ID (bytes32)
73
+ * @param amount - Amount in USDC wei (string)
74
+ * @param usdcAddress - USDC contract address
75
+ * @returns Transaction receipt
76
+ */
77
+ sendLinkEscrow(txId: string, amount: string, usdcAddress: string): Promise<TransactionReceipt>;
78
+ /**
79
+ * Validate release preconditions (state + dispute window).
80
+ *
81
+ * Handles both mock mode (disputeWindow = duration in seconds) and
82
+ * blockchain mode (disputeWindow = absolute timestamp). Uses a heuristic:
83
+ * values > 1 billion are absolute timestamps, smaller values are durations.
84
+ *
85
+ * @param txOrId - Transaction object or transaction ID to fetch
86
+ * @returns The validated transaction object (avoids double-fetch)
87
+ */
88
+ validateReleasePreconditions(txOrId: string | MockTransaction): Promise<MockTransaction>;
89
+ /**
90
+ * Verify/require attestation for wallet-routed release calls.
91
+ *
92
+ * Includes txId cross-check to prevent attestation replay attacks:
93
+ * ensures the provided attestation belongs to the transaction being released.
94
+ *
95
+ * @param txId - Transaction ID being released
96
+ * @param attestationUID - Optional attestation UID
97
+ */
98
+ verifyReleaseAttestation(txId: string, attestationUID?: string): Promise<void>;
99
+ /**
100
+ * Extract txId from escrowId, handling legacy format.
101
+ *
102
+ * @param escrowId - Escrow ID (may be txId or legacy "escrow-{txId}-{timestamp}" format)
103
+ * @returns The txId
104
+ */
105
+ static extractTxId(escrowId: string): string;
106
+ }
107
+ /**
108
+ * Compute the absolute end-time of the dispute window.
109
+ *
110
+ * Handles both representations transparently:
111
+ * - **Mock mode**: `disputeWindow` is a duration in seconds → `completedAt + disputeWindow`
112
+ * - **Blockchain mode**: `disputeWindow` is an absolute timestamp from on-chain → used as-is
113
+ *
114
+ * Heuristic: values > 1 billion are absolute timestamps (post-2001 epoch).
115
+ * Dispute window durations max at 30 days (~2.6M seconds). No overlap.
116
+ *
117
+ * @param completedAt - Delivery timestamp (0 in blockchain V1, real value in mock/V2)
118
+ * @param disputeWindow - Duration in seconds (mock) or absolute timestamp (blockchain)
119
+ * @returns Absolute timestamp when dispute window ends
120
+ */
121
+ export declare function computeDisputeWindowEnds(completedAt: number, disputeWindow: number): number;
122
+ /**
123
+ * Factory function to create a SmartWalletRouter if wallet provider supports batching.
124
+ *
125
+ * @returns SmartWalletRouter instance if Smart Wallet is available, undefined otherwise
126
+ */
127
+ export declare function createSmartWalletRouter(walletProvider?: IWalletProvider, contractAddresses?: SmartWalletContractAddresses, runtime?: IACTPRuntime, easHelper?: EASHelper): SmartWalletRouter | undefined;
128
+ //# sourceMappingURL=SmartWalletRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmartWalletRouter.d.ts","sourceRoot":"","sources":["../../src/wallet/SmartWalletRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAuBlE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAHV,cAAc,EAAE,eAAe,EAC/B,iBAAiB,EAAE,4BAA4B,EAC/C,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,uBAAW;IAGxC;;;OAGG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa,GAAG,kBAAkB;IAOnG;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;IAIhD;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa,EAAE,KAAK,GAAE,MAA0B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS5I;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS3D;;;;;;;;;;OAUG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0BpG;;;;;;;;;OASG;IACG,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA2C9F;;;;;;;;OAQG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpF;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAI7C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,CAAC,EAAE,eAAe,EAChC,iBAAiB,CAAC,EAAE,4BAA4B,EAChD,OAAO,CAAC,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,SAAS,GACpB,iBAAiB,GAAG,SAAS,CAK/B"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ /**
3
+ * SmartWalletRouter - Shared utility for routing state transitions through Smart Wallet.
4
+ *
5
+ * Centralizes the logic for encoding ACTPKernel contract calls as TransactionRequests,
6
+ * validating release preconditions, and verifying attestations. Used by BasicAdapter,
7
+ * StandardAdapter, and ACTPClient to avoid code triplication.
8
+ *
9
+ * @module wallet/SmartWalletRouter
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createSmartWalletRouter = exports.computeDisputeWindowEnds = exports.SmartWalletRouter = void 0;
13
+ const ethers_1 = require("ethers");
14
+ const MockState_1 = require("../runtime/types/MockState");
15
+ /**
16
+ * Pre-compiled ABI interface for ACTPKernel.transitionState().
17
+ * Module-level constant to avoid re-instantiation on every call.
18
+ */
19
+ const ACTP_KERNEL_IFACE = new ethers_1.ethers.Interface([
20
+ 'function transitionState(bytes32 transactionId, uint8 newState, bytes proof)',
21
+ 'function linkEscrow(bytes32 txId, address escrowVault, bytes32 escrowId)',
22
+ ]);
23
+ const ERC20_IFACE = new ethers_1.ethers.Interface([
24
+ 'function approve(address spender, uint256 amount)',
25
+ ]);
26
+ /**
27
+ * Threshold to distinguish absolute timestamps from durations.
28
+ * Dispute window durations max at 30 days (~2.6M seconds).
29
+ * Absolute timestamps (post-2001) are > 1 billion.
30
+ * There's no overlap between these ranges.
31
+ */
32
+ const ABSOLUTE_TIMESTAMP_THRESHOLD = 1000000000;
33
+ /**
34
+ * SmartWalletRouter centralizes Smart Wallet routing logic.
35
+ *
36
+ * When a wallet provider with batched support is available (ERC-4337 Smart Wallet),
37
+ * state transitions must be sent as UserOps through the wallet provider so that
38
+ * msg.sender equals the Smart Wallet address (not the EOA signer).
39
+ */
40
+ class SmartWalletRouter {
41
+ constructor(walletProvider, contractAddresses, runtime, easHelper) {
42
+ this.walletProvider = walletProvider;
43
+ this.contractAddresses = contractAddresses;
44
+ this.runtime = runtime;
45
+ this.easHelper = easHelper;
46
+ }
47
+ /**
48
+ * Check if state transitions should route through the wallet provider.
49
+ * True when walletProvider supports batching (i.e., is a Smart Wallet).
50
+ */
51
+ shouldRoute() {
52
+ return !!this.walletProvider.payACTPBatched;
53
+ }
54
+ /**
55
+ * Encode a transitionState call as a TransactionRequest.
56
+ */
57
+ encodeTransitionStateTx(txId, stateValue, proof = '0x') {
58
+ return {
59
+ to: this.contractAddresses.actpKernel,
60
+ data: ACTP_KERNEL_IFACE.encodeFunctionData('transitionState', [txId, stateValue, proof]),
61
+ };
62
+ }
63
+ /**
64
+ * Encode a SETTLED state transition as a TransactionRequest.
65
+ * Mirrors BlockchainRuntime.releaseEscrow() secure settlement flow.
66
+ */
67
+ encodeSettleTx(txId) {
68
+ return this.encodeTransitionStateTx(txId, MockState_1.TransactionStateValue.SETTLED, '0x');
69
+ }
70
+ /**
71
+ * Send a state transition through the wallet provider and check the receipt.
72
+ *
73
+ * @param txId - Transaction ID
74
+ * @param stateValue - Target state value (from TransactionStateValue enum)
75
+ * @param proof - Optional proof data
76
+ * @param label - Human-readable label for error messages (e.g., "startWork", "deliver")
77
+ * @returns Transaction receipt
78
+ */
79
+ async sendTransition(txId, stateValue, proof = '0x', label = 'transitionState') {
80
+ const tx = this.encodeTransitionStateTx(txId, stateValue, proof);
81
+ const receipt = await this.walletProvider.sendTransaction(tx);
82
+ if (!receipt.success) {
83
+ throw new Error(`${label} UserOp failed: ${receipt.hash}`);
84
+ }
85
+ return receipt;
86
+ }
87
+ /**
88
+ * Send a SETTLED transition through the wallet provider.
89
+ *
90
+ * @param txId - Transaction ID
91
+ * @returns Transaction receipt
92
+ */
93
+ async sendSettle(txId) {
94
+ const tx = this.encodeSettleTx(txId);
95
+ const receipt = await this.walletProvider.sendTransaction(tx);
96
+ if (!receipt.success) {
97
+ throw new Error(`release UserOp failed: ${receipt.hash}`);
98
+ }
99
+ return receipt;
100
+ }
101
+ /**
102
+ * Send a linkEscrow call through the wallet provider as a batched UserOp.
103
+ *
104
+ * Encodes USDC.approve(escrowVault, amount) + ACTPKernel.linkEscrow(txId, escrowVault, txId)
105
+ * and submits them as a single atomic batch.
106
+ *
107
+ * @param txId - Transaction ID (bytes32)
108
+ * @param amount - Amount in USDC wei (string)
109
+ * @param usdcAddress - USDC contract address
110
+ * @returns Transaction receipt
111
+ */
112
+ async sendLinkEscrow(txId, amount, usdcAddress) {
113
+ const amountBn = BigInt(amount);
114
+ const approveData = ERC20_IFACE.encodeFunctionData('approve', [
115
+ this.contractAddresses.escrowVault,
116
+ amountBn,
117
+ ]);
118
+ const linkEscrowData = ACTP_KERNEL_IFACE.encodeFunctionData('linkEscrow', [
119
+ txId,
120
+ this.contractAddresses.escrowVault,
121
+ txId, // escrowId = txId (ACTP standard)
122
+ ]);
123
+ const txs = [
124
+ { to: usdcAddress, data: approveData },
125
+ { to: this.contractAddresses.actpKernel, data: linkEscrowData },
126
+ ];
127
+ const receipt = await this.walletProvider.sendBatchTransaction(txs);
128
+ if (!receipt.success) {
129
+ throw new Error(`linkEscrow UserOp failed: ${receipt.hash}`);
130
+ }
131
+ return receipt;
132
+ }
133
+ /**
134
+ * Validate release preconditions (state + dispute window).
135
+ *
136
+ * Handles both mock mode (disputeWindow = duration in seconds) and
137
+ * blockchain mode (disputeWindow = absolute timestamp). Uses a heuristic:
138
+ * values > 1 billion are absolute timestamps, smaller values are durations.
139
+ *
140
+ * @param txOrId - Transaction object or transaction ID to fetch
141
+ * @returns The validated transaction object (avoids double-fetch)
142
+ */
143
+ async validateReleasePreconditions(txOrId) {
144
+ const tx = typeof txOrId === 'string'
145
+ ? await this.runtime.getTransaction(txOrId)
146
+ : txOrId;
147
+ const txId = typeof txOrId === 'string' ? txOrId : txOrId.id;
148
+ if (!tx) {
149
+ throw new Error(`Transaction ${txId} not found`);
150
+ }
151
+ if (tx.state !== 'DELIVERED') {
152
+ throw new Error(`Cannot release escrow: transaction ${txId} is in state ${tx.state}, expected DELIVERED.`);
153
+ }
154
+ // Dispute window check.
155
+ // Requester is allowed to approve early release before dispute window end.
156
+ // Mock mode: completedAt = delivery timestamp, disputeWindow = duration in seconds.
157
+ // Blockchain mode: completedAt = 0 (V1), disputeWindow = absolute timestamp from chain.
158
+ // Heuristic: if disputeWindow > 1 billion, it's an absolute timestamp (post-2001).
159
+ if (tx.completedAt !== null && tx.completedAt !== undefined) {
160
+ const disputeWindowEnds = computeDisputeWindowEnds(tx.completedAt, tx.disputeWindow);
161
+ const now = this.runtime.time.now();
162
+ if (now < disputeWindowEnds) {
163
+ const caller = this.walletProvider.getAddress().toLowerCase();
164
+ const requester = tx.requester.toLowerCase();
165
+ const isRequester = caller === requester;
166
+ if (!isRequester) {
167
+ const remaining = disputeWindowEnds - now;
168
+ throw new Error(`Cannot release escrow: dispute window still active for transaction ${txId}. ` +
169
+ `Window expires in ${remaining} seconds.`);
170
+ }
171
+ }
172
+ }
173
+ return tx;
174
+ }
175
+ /**
176
+ * Verify/require attestation for wallet-routed release calls.
177
+ *
178
+ * Includes txId cross-check to prevent attestation replay attacks:
179
+ * ensures the provided attestation belongs to the transaction being released.
180
+ *
181
+ * @param txId - Transaction ID being released
182
+ * @param attestationUID - Optional attestation UID
183
+ */
184
+ async verifyReleaseAttestation(txId, attestationUID) {
185
+ const runtimeAny = this.runtime;
186
+ const runtimeSupportsAttestationFlag = typeof runtimeAny?.isAttestationRequired === 'function';
187
+ const attestationRequired = runtimeSupportsAttestationFlag
188
+ ? Boolean(runtimeAny.isAttestationRequired())
189
+ : Boolean(this.easHelper);
190
+ if (attestationRequired && !attestationUID) {
191
+ throw new Error('Attestation verification is REQUIRED for escrow release. ' +
192
+ 'Provide attestationUID when using Smart Wallet release.');
193
+ }
194
+ if (attestationRequired && !this.easHelper) {
195
+ throw new Error('Attestation verification is required but EAS helper is not initialized.');
196
+ }
197
+ if (attestationUID && this.easHelper) {
198
+ await this.easHelper.verifyAndRecordForRelease(txId, attestationUID);
199
+ }
200
+ }
201
+ /**
202
+ * Extract txId from escrowId, handling legacy format.
203
+ *
204
+ * @param escrowId - Escrow ID (may be txId or legacy "escrow-{txId}-{timestamp}" format)
205
+ * @returns The txId
206
+ */
207
+ static extractTxId(escrowId) {
208
+ const legacyMatch = escrowId.match(/^escrow-(.+)-\d+$/);
209
+ return legacyMatch ? legacyMatch[1] : escrowId;
210
+ }
211
+ }
212
+ exports.SmartWalletRouter = SmartWalletRouter;
213
+ /**
214
+ * Compute the absolute end-time of the dispute window.
215
+ *
216
+ * Handles both representations transparently:
217
+ * - **Mock mode**: `disputeWindow` is a duration in seconds → `completedAt + disputeWindow`
218
+ * - **Blockchain mode**: `disputeWindow` is an absolute timestamp from on-chain → used as-is
219
+ *
220
+ * Heuristic: values > 1 billion are absolute timestamps (post-2001 epoch).
221
+ * Dispute window durations max at 30 days (~2.6M seconds). No overlap.
222
+ *
223
+ * @param completedAt - Delivery timestamp (0 in blockchain V1, real value in mock/V2)
224
+ * @param disputeWindow - Duration in seconds (mock) or absolute timestamp (blockchain)
225
+ * @returns Absolute timestamp when dispute window ends
226
+ */
227
+ function computeDisputeWindowEnds(completedAt, disputeWindow) {
228
+ if (disputeWindow > ABSOLUTE_TIMESTAMP_THRESHOLD) {
229
+ // Blockchain mode: disputeWindow IS the absolute end timestamp
230
+ return disputeWindow;
231
+ }
232
+ // Mock mode: disputeWindow is a duration relative to completedAt
233
+ return completedAt + disputeWindow;
234
+ }
235
+ exports.computeDisputeWindowEnds = computeDisputeWindowEnds;
236
+ /**
237
+ * Factory function to create a SmartWalletRouter if wallet provider supports batching.
238
+ *
239
+ * @returns SmartWalletRouter instance if Smart Wallet is available, undefined otherwise
240
+ */
241
+ function createSmartWalletRouter(walletProvider, contractAddresses, runtime, easHelper) {
242
+ if (walletProvider?.payACTPBatched && contractAddresses && runtime) {
243
+ return new SmartWalletRouter(walletProvider, contractAddresses, runtime, easHelper);
244
+ }
245
+ return undefined;
246
+ }
247
+ exports.createSmartWalletRouter = createSmartWalletRouter;
248
+ //# sourceMappingURL=SmartWalletRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmartWalletRouter.js","sourceRoot":"","sources":["../../src/wallet/SmartWalletRouter.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,11 @@ export declare class DualNonceManager {
20
20
  private readonly mutex;
21
21
  /** Locally cached ACTP nonce — undefined means "re-read from chain" */
22
22
  private cachedActpNonce;
23
- constructor(provider: ethers.JsonRpcProvider, senderAddress: string, actpKernelAddress: string);
23
+ /** Cached deployment block for ACTPKernel address */
24
+ private cachedKernelDeploymentBlock;
25
+ /** Whether the cached deployment block hint has been validated against the chain */
26
+ private deploymentBlockValidated;
27
+ constructor(provider: ethers.JsonRpcProvider, senderAddress: string, actpKernelAddress: string, knownDeploymentBlock?: number);
24
28
  /**
25
29
  * Execute a callback while holding the nonce mutex.
26
30
  *
@@ -52,5 +56,26 @@ export declare class DualNonceManager {
52
56
  * Invalidate cached ACTP nonce (forces re-read on next operation).
53
57
  */
54
58
  invalidateCache(): void;
59
+ /**
60
+ * Override cached ACTP nonce.
61
+ *
62
+ * Used when caller deterministically advances nonce (e.g. retrying batched
63
+ * creation after "Escrow ID already used" simulation failures).
64
+ */
65
+ setCachedActpNonce(nonce: bigint): void;
66
+ /**
67
+ * Find contract deployment block using binary search on getCode().
68
+ *
69
+ * If a knownDeploymentBlock was provided at construction, it is validated
70
+ * once by checking getCode() at that block. On mismatch the cache is
71
+ * discarded and the full binary search runs as fallback.
72
+ */
73
+ private findContractDeploymentBlock;
74
+ /**
75
+ * Count TransactionCreated logs for requester in chunks.
76
+ *
77
+ * Chunking avoids RPC range limits on providers that reject very large log windows.
78
+ */
79
+ private countRequesterTransactionCreatedEvents;
55
80
  }
56
81
  //# sourceMappingURL=DualNonceManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DualNonceManager.d.ts","sourceRoot":"","sources":["../../../src/wallet/aa/DualNonceManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAgDhC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,uEAAuE;IACvE,OAAO,CAAC,eAAe,CAAqB;gBAG1C,QAAQ,EAAE,MAAM,CAAC,eAAe,EAChC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM;IAO3B;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,CAAC,MAAM,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QACtE,MAAM,EAAE,CAAC,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,EACF,mBAAmB,GAAE,OAAc,GAClC,OAAO,CAAC,CAAC,CAAC;IA+Bb;;;OAGG;YACW,mBAAmB;IASjC;;;;OAIG;YACW,aAAa;IAoB3B;;OAEG;IACH,eAAe,IAAI,IAAI;CAGxB"}
1
+ {"version":3,"file":"DualNonceManager.d.ts","sourceRoot":"","sources":["../../../src/wallet/aa/DualNonceManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAsDhC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,uEAAuE;IACvE,OAAO,CAAC,eAAe,CAAqB;IAC5C,qDAAqD;IACrD,OAAO,CAAC,2BAA2B,CAAqB;IACxD,oFAAoF;IACpF,OAAO,CAAC,wBAAwB,CAAS;gBAGvC,QAAQ,EAAE,MAAM,CAAC,eAAe,EAChC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM;IAU/B;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,CAAC,MAAM,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QACtE,MAAM,EAAE,CAAC,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,EACF,mBAAmB,GAAE,OAAc,GAClC,OAAO,CAAC,CAAC,CAAC;IA+Bb;;;OAGG;YACW,mBAAmB;IASjC;;;;OAIG;YACW,aAAa;IAgD3B;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC;;;;;;OAMG;YACW,2BAA2B;IA2DzC;;;;OAIG;YACW,sCAAsC;CA0CrD"}