@payai/x402-evm 2.3.6 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/cjs/exact/client/index.d.ts +3 -2
  2. package/dist/cjs/exact/client/index.js +173 -194
  3. package/dist/cjs/exact/client/index.js.map +1 -1
  4. package/dist/cjs/exact/facilitator/index.js +199 -185
  5. package/dist/cjs/exact/facilitator/index.js.map +1 -1
  6. package/dist/cjs/exact/server/index.d.ts +18 -17
  7. package/dist/cjs/exact/server/index.js +100 -55
  8. package/dist/cjs/exact/server/index.js.map +1 -1
  9. package/dist/cjs/exact/v1/client/index.js +3 -1
  10. package/dist/cjs/exact/v1/client/index.js.map +1 -1
  11. package/dist/cjs/exact/v1/facilitator/index.js +3 -1
  12. package/dist/cjs/exact/v1/facilitator/index.js.map +1 -1
  13. package/dist/cjs/index.d.ts +38 -2
  14. package/dist/cjs/index.js +441 -191
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/{permit2-U9Zolx3O.d.ts → permit2-CyZxwngN.d.ts} +278 -87
  17. package/dist/cjs/scheme-CXDF0D2A.d.ts +47 -0
  18. package/dist/cjs/upto/client/index.d.ts +32 -0
  19. package/dist/cjs/upto/client/index.js +507 -0
  20. package/dist/cjs/upto/client/index.js.map +1 -0
  21. package/dist/cjs/upto/facilitator/index.d.ts +52 -0
  22. package/dist/cjs/upto/facilitator/index.js +1233 -0
  23. package/dist/cjs/upto/facilitator/index.js.map +1 -0
  24. package/dist/cjs/upto/server/index.d.ts +77 -0
  25. package/dist/cjs/upto/server/index.js +246 -0
  26. package/dist/cjs/upto/server/index.js.map +1 -0
  27. package/dist/cjs/v1/index.d.ts +2 -0
  28. package/dist/cjs/v1/index.js +3 -1
  29. package/dist/cjs/v1/index.js.map +1 -1
  30. package/dist/esm/chunk-C4ZQMS77.mjs +629 -0
  31. package/dist/esm/chunk-C4ZQMS77.mjs.map +1 -0
  32. package/dist/esm/chunk-CRT6YNY5.mjs +529 -0
  33. package/dist/esm/chunk-CRT6YNY5.mjs.map +1 -0
  34. package/dist/esm/chunk-D6RXZXOS.mjs +158 -0
  35. package/dist/esm/chunk-D6RXZXOS.mjs.map +1 -0
  36. package/dist/esm/chunk-GJ57SZGI.mjs +121 -0
  37. package/dist/esm/chunk-GJ57SZGI.mjs.map +1 -0
  38. package/dist/esm/chunk-JII456TS.mjs +34 -0
  39. package/dist/esm/chunk-JII456TS.mjs.map +1 -0
  40. package/dist/esm/chunk-NSFLAANF.mjs +80 -0
  41. package/dist/esm/chunk-NSFLAANF.mjs.map +1 -0
  42. package/dist/esm/{chunk-PCJKIY5G.mjs → chunk-RYT6M3PA.mjs} +29 -501
  43. package/dist/esm/chunk-RYT6M3PA.mjs.map +1 -0
  44. package/dist/esm/chunk-WKBC5YMI.mjs +291 -0
  45. package/dist/esm/chunk-WKBC5YMI.mjs.map +1 -0
  46. package/dist/esm/exact/client/index.d.mts +3 -2
  47. package/dist/esm/exact/client/index.mjs +8 -5
  48. package/dist/esm/exact/facilitator/index.mjs +84 -430
  49. package/dist/esm/exact/facilitator/index.mjs.map +1 -1
  50. package/dist/esm/exact/server/index.d.mts +18 -17
  51. package/dist/esm/exact/server/index.mjs +28 -55
  52. package/dist/esm/exact/server/index.mjs.map +1 -1
  53. package/dist/esm/exact/v1/client/index.mjs +2 -1
  54. package/dist/esm/exact/v1/facilitator/index.mjs +2 -1
  55. package/dist/esm/index.d.mts +38 -2
  56. package/dist/esm/index.mjs +21 -8
  57. package/dist/esm/index.mjs.map +1 -1
  58. package/dist/esm/{permit2-Bbh3a8_h.d.mts → permit2-CyZxwngN.d.mts} +278 -87
  59. package/dist/esm/scheme-DCR7hsa3.d.mts +47 -0
  60. package/dist/esm/upto/client/index.d.mts +32 -0
  61. package/dist/esm/upto/client/index.mjs +18 -0
  62. package/dist/esm/upto/client/index.mjs.map +1 -0
  63. package/dist/esm/upto/facilitator/index.d.mts +52 -0
  64. package/dist/esm/upto/facilitator/index.mjs +473 -0
  65. package/dist/esm/upto/facilitator/index.mjs.map +1 -0
  66. package/dist/esm/upto/server/index.d.mts +77 -0
  67. package/dist/esm/upto/server/index.mjs +145 -0
  68. package/dist/esm/upto/server/index.mjs.map +1 -0
  69. package/dist/esm/v1/index.d.mts +2 -0
  70. package/dist/esm/v1/index.mjs +2 -1
  71. package/package.json +31 -1
  72. package/dist/esm/chunk-GD4MKCN7.mjs +0 -57
  73. package/dist/esm/chunk-GD4MKCN7.mjs.map +0 -1
  74. package/dist/esm/chunk-LWO35IGS.mjs +0 -518
  75. package/dist/esm/chunk-LWO35IGS.mjs.map +0 -1
  76. package/dist/esm/chunk-PCJKIY5G.mjs.map +0 -1
  77. package/dist/esm/chunk-TKN5V2BV.mjs +0 -13
  78. package/dist/esm/chunk-TKN5V2BV.mjs.map +0 -1
@@ -0,0 +1,629 @@
1
+ // src/constants.ts
2
+ var authorizationTypes = {
3
+ TransferWithAuthorization: [
4
+ { name: "from", type: "address" },
5
+ { name: "to", type: "address" },
6
+ { name: "value", type: "uint256" },
7
+ { name: "validAfter", type: "uint256" },
8
+ { name: "validBefore", type: "uint256" },
9
+ { name: "nonce", type: "bytes32" }
10
+ ]
11
+ };
12
+ var permit2WitnessTypes = {
13
+ PermitWitnessTransferFrom: [
14
+ { name: "permitted", type: "TokenPermissions" },
15
+ { name: "spender", type: "address" },
16
+ { name: "nonce", type: "uint256" },
17
+ { name: "deadline", type: "uint256" },
18
+ { name: "witness", type: "Witness" }
19
+ ],
20
+ TokenPermissions: [
21
+ { name: "token", type: "address" },
22
+ { name: "amount", type: "uint256" }
23
+ ],
24
+ Witness: [
25
+ { name: "to", type: "address" },
26
+ { name: "validAfter", type: "uint256" }
27
+ ]
28
+ };
29
+ var uptoPermit2WitnessTypes = {
30
+ PermitWitnessTransferFrom: [
31
+ { name: "permitted", type: "TokenPermissions" },
32
+ { name: "spender", type: "address" },
33
+ { name: "nonce", type: "uint256" },
34
+ { name: "deadline", type: "uint256" },
35
+ { name: "witness", type: "Witness" }
36
+ ],
37
+ TokenPermissions: [
38
+ { name: "token", type: "address" },
39
+ { name: "amount", type: "uint256" }
40
+ ],
41
+ Witness: [
42
+ { name: "to", type: "address" },
43
+ { name: "facilitator", type: "address" },
44
+ { name: "validAfter", type: "uint256" }
45
+ ]
46
+ };
47
+ var eip3009ABI = [
48
+ {
49
+ inputs: [
50
+ { name: "from", type: "address" },
51
+ { name: "to", type: "address" },
52
+ { name: "value", type: "uint256" },
53
+ { name: "validAfter", type: "uint256" },
54
+ { name: "validBefore", type: "uint256" },
55
+ { name: "nonce", type: "bytes32" },
56
+ { name: "v", type: "uint8" },
57
+ { name: "r", type: "bytes32" },
58
+ { name: "s", type: "bytes32" }
59
+ ],
60
+ name: "transferWithAuthorization",
61
+ outputs: [],
62
+ stateMutability: "nonpayable",
63
+ type: "function"
64
+ },
65
+ {
66
+ inputs: [
67
+ { name: "from", type: "address" },
68
+ { name: "to", type: "address" },
69
+ { name: "value", type: "uint256" },
70
+ { name: "validAfter", type: "uint256" },
71
+ { name: "validBefore", type: "uint256" },
72
+ { name: "nonce", type: "bytes32" },
73
+ { name: "signature", type: "bytes" }
74
+ ],
75
+ name: "transferWithAuthorization",
76
+ outputs: [],
77
+ stateMutability: "nonpayable",
78
+ type: "function"
79
+ },
80
+ {
81
+ inputs: [{ name: "account", type: "address" }],
82
+ name: "balanceOf",
83
+ outputs: [{ name: "", type: "uint256" }],
84
+ stateMutability: "view",
85
+ type: "function"
86
+ },
87
+ {
88
+ inputs: [],
89
+ name: "version",
90
+ outputs: [{ name: "", type: "string" }],
91
+ stateMutability: "view",
92
+ type: "function"
93
+ },
94
+ {
95
+ inputs: [],
96
+ name: "name",
97
+ outputs: [{ name: "", type: "string" }],
98
+ stateMutability: "view",
99
+ type: "function"
100
+ },
101
+ {
102
+ inputs: [
103
+ { name: "authorizer", type: "address" },
104
+ { name: "nonce", type: "bytes32" }
105
+ ],
106
+ name: "authorizationState",
107
+ outputs: [{ name: "", type: "bool" }],
108
+ stateMutability: "view",
109
+ type: "function"
110
+ }
111
+ ];
112
+ var eip2612PermitTypes = {
113
+ Permit: [
114
+ { name: "owner", type: "address" },
115
+ { name: "spender", type: "address" },
116
+ { name: "value", type: "uint256" },
117
+ { name: "nonce", type: "uint256" },
118
+ { name: "deadline", type: "uint256" }
119
+ ]
120
+ };
121
+ var eip2612NoncesAbi = [
122
+ {
123
+ type: "function",
124
+ name: "nonces",
125
+ inputs: [{ name: "owner", type: "address" }],
126
+ outputs: [{ type: "uint256" }],
127
+ stateMutability: "view"
128
+ }
129
+ ];
130
+ var erc20ApproveAbi = [
131
+ {
132
+ type: "function",
133
+ name: "approve",
134
+ inputs: [
135
+ { name: "spender", type: "address" },
136
+ { name: "amount", type: "uint256" }
137
+ ],
138
+ outputs: [{ type: "bool" }],
139
+ stateMutability: "nonpayable"
140
+ }
141
+ ];
142
+ var erc20AllowanceAbi = [
143
+ {
144
+ type: "function",
145
+ name: "allowance",
146
+ inputs: [
147
+ { name: "owner", type: "address" },
148
+ { name: "spender", type: "address" }
149
+ ],
150
+ outputs: [{ type: "uint256" }],
151
+ stateMutability: "view"
152
+ }
153
+ ];
154
+ var ERC20_APPROVE_GAS_LIMIT = 70000n;
155
+ var DEFAULT_MAX_FEE_PER_GAS = 1000000000n;
156
+ var DEFAULT_MAX_PRIORITY_FEE_PER_GAS = 100000000n;
157
+ var PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
158
+ var x402ExactPermit2ProxyAddress = "0x402085c248EeA27D92E8b30b2C58ed07f9E20001";
159
+ var x402UptoPermit2ProxyAddress = "0x4020A4f3b7b90ccA423B9fabCc0CE57C6C240002";
160
+ var permit2WitnessABIComponents = [
161
+ { name: "to", type: "address", internalType: "address" },
162
+ { name: "validAfter", type: "uint256", internalType: "uint256" }
163
+ ];
164
+ var uptoPermit2WitnessABIComponents = [
165
+ { name: "to", type: "address", internalType: "address" },
166
+ { name: "facilitator", type: "address", internalType: "address" },
167
+ { name: "validAfter", type: "uint256", internalType: "uint256" }
168
+ ];
169
+ var x402UptoPermit2ProxyABI = [
170
+ {
171
+ type: "function",
172
+ name: "PERMIT2",
173
+ inputs: [],
174
+ outputs: [{ name: "", type: "address", internalType: "contract ISignatureTransfer" }],
175
+ stateMutability: "view"
176
+ },
177
+ {
178
+ type: "function",
179
+ name: "WITNESS_TYPEHASH",
180
+ inputs: [],
181
+ outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
182
+ stateMutability: "view"
183
+ },
184
+ {
185
+ type: "function",
186
+ name: "WITNESS_TYPE_STRING",
187
+ inputs: [],
188
+ outputs: [{ name: "", type: "string", internalType: "string" }],
189
+ stateMutability: "view"
190
+ },
191
+ {
192
+ type: "function",
193
+ name: "settle",
194
+ inputs: [
195
+ {
196
+ name: "permit",
197
+ type: "tuple",
198
+ internalType: "struct ISignatureTransfer.PermitTransferFrom",
199
+ components: [
200
+ {
201
+ name: "permitted",
202
+ type: "tuple",
203
+ internalType: "struct ISignatureTransfer.TokenPermissions",
204
+ components: [
205
+ { name: "token", type: "address", internalType: "address" },
206
+ { name: "amount", type: "uint256", internalType: "uint256" }
207
+ ]
208
+ },
209
+ { name: "nonce", type: "uint256", internalType: "uint256" },
210
+ { name: "deadline", type: "uint256", internalType: "uint256" }
211
+ ]
212
+ },
213
+ { name: "amount", type: "uint256", internalType: "uint256" },
214
+ { name: "owner", type: "address", internalType: "address" },
215
+ {
216
+ name: "witness",
217
+ type: "tuple",
218
+ internalType: "struct x402UptoPermit2Proxy.Witness",
219
+ components: uptoPermit2WitnessABIComponents
220
+ },
221
+ { name: "signature", type: "bytes", internalType: "bytes" }
222
+ ],
223
+ outputs: [],
224
+ stateMutability: "nonpayable"
225
+ },
226
+ {
227
+ type: "function",
228
+ name: "settleWithPermit",
229
+ inputs: [
230
+ {
231
+ name: "permit2612",
232
+ type: "tuple",
233
+ internalType: "struct x402UptoPermit2Proxy.EIP2612Permit",
234
+ components: [
235
+ { name: "value", type: "uint256", internalType: "uint256" },
236
+ { name: "deadline", type: "uint256", internalType: "uint256" },
237
+ { name: "r", type: "bytes32", internalType: "bytes32" },
238
+ { name: "s", type: "bytes32", internalType: "bytes32" },
239
+ { name: "v", type: "uint8", internalType: "uint8" }
240
+ ]
241
+ },
242
+ {
243
+ name: "permit",
244
+ type: "tuple",
245
+ internalType: "struct ISignatureTransfer.PermitTransferFrom",
246
+ components: [
247
+ {
248
+ name: "permitted",
249
+ type: "tuple",
250
+ internalType: "struct ISignatureTransfer.TokenPermissions",
251
+ components: [
252
+ { name: "token", type: "address", internalType: "address" },
253
+ { name: "amount", type: "uint256", internalType: "uint256" }
254
+ ]
255
+ },
256
+ { name: "nonce", type: "uint256", internalType: "uint256" },
257
+ { name: "deadline", type: "uint256", internalType: "uint256" }
258
+ ]
259
+ },
260
+ { name: "amount", type: "uint256", internalType: "uint256" },
261
+ { name: "owner", type: "address", internalType: "address" },
262
+ {
263
+ name: "witness",
264
+ type: "tuple",
265
+ internalType: "struct x402UptoPermit2Proxy.Witness",
266
+ components: uptoPermit2WitnessABIComponents
267
+ },
268
+ { name: "signature", type: "bytes", internalType: "bytes" }
269
+ ],
270
+ outputs: [],
271
+ stateMutability: "nonpayable"
272
+ },
273
+ { type: "event", name: "Settled", inputs: [], anonymous: false },
274
+ { type: "event", name: "SettledWithPermit", inputs: [], anonymous: false },
275
+ { type: "error", name: "AmountExceedsPermitted", inputs: [] },
276
+ { type: "error", name: "InvalidDestination", inputs: [] },
277
+ { type: "error", name: "InvalidOwner", inputs: [] },
278
+ { type: "error", name: "InvalidPermit2Address", inputs: [] },
279
+ { type: "error", name: "PaymentTooEarly", inputs: [] },
280
+ { type: "error", name: "Permit2612AmountMismatch", inputs: [] },
281
+ { type: "error", name: "ReentrancyGuardReentrantCall", inputs: [] },
282
+ { type: "error", name: "UnauthorizedFacilitator", inputs: [] }
283
+ ];
284
+ var x402ExactPermit2ProxyABI = [
285
+ {
286
+ type: "function",
287
+ name: "PERMIT2",
288
+ inputs: [],
289
+ outputs: [{ name: "", type: "address", internalType: "contract ISignatureTransfer" }],
290
+ stateMutability: "view"
291
+ },
292
+ {
293
+ type: "function",
294
+ name: "WITNESS_TYPEHASH",
295
+ inputs: [],
296
+ outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
297
+ stateMutability: "view"
298
+ },
299
+ {
300
+ type: "function",
301
+ name: "WITNESS_TYPE_STRING",
302
+ inputs: [],
303
+ outputs: [{ name: "", type: "string", internalType: "string" }],
304
+ stateMutability: "view"
305
+ },
306
+ {
307
+ type: "function",
308
+ name: "settle",
309
+ inputs: [
310
+ {
311
+ name: "permit",
312
+ type: "tuple",
313
+ internalType: "struct ISignatureTransfer.PermitTransferFrom",
314
+ components: [
315
+ {
316
+ name: "permitted",
317
+ type: "tuple",
318
+ internalType: "struct ISignatureTransfer.TokenPermissions",
319
+ components: [
320
+ { name: "token", type: "address", internalType: "address" },
321
+ { name: "amount", type: "uint256", internalType: "uint256" }
322
+ ]
323
+ },
324
+ { name: "nonce", type: "uint256", internalType: "uint256" },
325
+ { name: "deadline", type: "uint256", internalType: "uint256" }
326
+ ]
327
+ },
328
+ { name: "owner", type: "address", internalType: "address" },
329
+ {
330
+ name: "witness",
331
+ type: "tuple",
332
+ internalType: "struct x402ExactPermit2Proxy.Witness",
333
+ components: permit2WitnessABIComponents
334
+ },
335
+ { name: "signature", type: "bytes", internalType: "bytes" }
336
+ ],
337
+ outputs: [],
338
+ stateMutability: "nonpayable"
339
+ },
340
+ {
341
+ type: "function",
342
+ name: "settleWithPermit",
343
+ inputs: [
344
+ {
345
+ name: "permit2612",
346
+ type: "tuple",
347
+ internalType: "struct x402ExactPermit2Proxy.EIP2612Permit",
348
+ components: [
349
+ { name: "value", type: "uint256", internalType: "uint256" },
350
+ { name: "deadline", type: "uint256", internalType: "uint256" },
351
+ { name: "r", type: "bytes32", internalType: "bytes32" },
352
+ { name: "s", type: "bytes32", internalType: "bytes32" },
353
+ { name: "v", type: "uint8", internalType: "uint8" }
354
+ ]
355
+ },
356
+ {
357
+ name: "permit",
358
+ type: "tuple",
359
+ internalType: "struct ISignatureTransfer.PermitTransferFrom",
360
+ components: [
361
+ {
362
+ name: "permitted",
363
+ type: "tuple",
364
+ internalType: "struct ISignatureTransfer.TokenPermissions",
365
+ components: [
366
+ { name: "token", type: "address", internalType: "address" },
367
+ { name: "amount", type: "uint256", internalType: "uint256" }
368
+ ]
369
+ },
370
+ { name: "nonce", type: "uint256", internalType: "uint256" },
371
+ { name: "deadline", type: "uint256", internalType: "uint256" }
372
+ ]
373
+ },
374
+ { name: "owner", type: "address", internalType: "address" },
375
+ {
376
+ name: "witness",
377
+ type: "tuple",
378
+ internalType: "struct x402ExactPermit2Proxy.Witness",
379
+ components: permit2WitnessABIComponents
380
+ },
381
+ { name: "signature", type: "bytes", internalType: "bytes" }
382
+ ],
383
+ outputs: [],
384
+ stateMutability: "nonpayable"
385
+ },
386
+ { type: "event", name: "Settled", inputs: [], anonymous: false },
387
+ { type: "event", name: "SettledWithPermit", inputs: [], anonymous: false },
388
+ { type: "error", name: "InvalidAmount", inputs: [] },
389
+ { type: "error", name: "InvalidDestination", inputs: [] },
390
+ { type: "error", name: "InvalidOwner", inputs: [] },
391
+ { type: "error", name: "InvalidPermit2Address", inputs: [] },
392
+ { type: "error", name: "PaymentTooEarly", inputs: [] },
393
+ { type: "error", name: "Permit2612AmountMismatch", inputs: [] },
394
+ { type: "error", name: "ReentrancyGuardReentrantCall", inputs: [] }
395
+ ];
396
+
397
+ // src/utils.ts
398
+ import { toHex } from "viem";
399
+ function getEvmChainId(network) {
400
+ if (network.startsWith("eip155:")) {
401
+ const idStr = network.split(":")[1];
402
+ const chainId = parseInt(idStr, 10);
403
+ if (isNaN(chainId)) {
404
+ throw new Error(`Invalid CAIP-2 chain ID: ${network}`);
405
+ }
406
+ return chainId;
407
+ }
408
+ throw new Error(`Unsupported network format: ${network} (expected eip155:CHAIN_ID)`);
409
+ }
410
+ function getCrypto() {
411
+ const cryptoObj = globalThis.crypto;
412
+ if (!cryptoObj) {
413
+ throw new Error("Crypto API not available");
414
+ }
415
+ return cryptoObj;
416
+ }
417
+ function createNonce() {
418
+ return toHex(getCrypto().getRandomValues(new Uint8Array(32)));
419
+ }
420
+ function createPermit2Nonce() {
421
+ const randomBytes = getCrypto().getRandomValues(new Uint8Array(32));
422
+ return BigInt(toHex(randomBytes)).toString();
423
+ }
424
+
425
+ // src/exact/facilitator/errors.ts
426
+ var ErrInvalidScheme = "invalid_exact_evm_scheme";
427
+ var ErrNetworkMismatch = "invalid_exact_evm_network_mismatch";
428
+ var ErrMissingEip712Domain = "invalid_exact_evm_missing_eip712_domain";
429
+ var ErrRecipientMismatch = "invalid_exact_evm_recipient_mismatch";
430
+ var ErrInvalidSignature = "invalid_exact_evm_signature";
431
+ var ErrValidBeforeExpired = "invalid_exact_evm_payload_authorization_valid_before";
432
+ var ErrValidAfterInFuture = "invalid_exact_evm_payload_authorization_valid_after";
433
+ var ErrInvalidAuthorizationValue = "invalid_exact_evm_authorization_value";
434
+ var ErrUndeployedSmartWallet = "invalid_exact_evm_payload_undeployed_smart_wallet";
435
+ var ErrTransactionFailed = "invalid_exact_evm_transaction_failed";
436
+ var ErrEip3009TokenNameMismatch = "invalid_exact_evm_token_name_mismatch";
437
+ var ErrEip3009TokenVersionMismatch = "invalid_exact_evm_token_version_mismatch";
438
+ var ErrEip3009NotSupported = "invalid_exact_evm_eip3009_not_supported";
439
+ var ErrEip3009NonceAlreadyUsed = "invalid_exact_evm_nonce_already_used";
440
+ var ErrEip3009InsufficientBalance = "invalid_exact_evm_insufficient_balance";
441
+ var ErrEip3009SimulationFailed = "invalid_exact_evm_transaction_simulation_failed";
442
+ var ErrPermit2InvalidSpender = "invalid_permit2_spender";
443
+ var ErrPermit2RecipientMismatch = "invalid_permit2_recipient_mismatch";
444
+ var ErrPermit2DeadlineExpired = "permit2_deadline_expired";
445
+ var ErrPermit2NotYetValid = "permit2_not_yet_valid";
446
+ var ErrPermit2AmountMismatch = "permit2_amount_mismatch";
447
+ var ErrPermit2TokenMismatch = "permit2_token_mismatch";
448
+ var ErrPermit2InvalidSignature = "invalid_permit2_signature";
449
+ var ErrPermit2AllowanceRequired = "permit2_allowance_required";
450
+ var ErrPermit2SimulationFailed = "permit2_simulation_failed";
451
+ var ErrPermit2InsufficientBalance = "permit2_insufficient_balance";
452
+ var ErrPermit2ProxyNotDeployed = "permit2_proxy_not_deployed";
453
+ var ErrPermit2InvalidAmount = "permit2_invalid_amount";
454
+ var ErrPermit2InvalidDestination = "permit2_invalid_destination";
455
+ var ErrPermit2InvalidOwner = "permit2_invalid_owner";
456
+ var ErrPermit2PaymentTooEarly = "permit2_payment_too_early";
457
+ var ErrPermit2InvalidNonce = "permit2_invalid_nonce";
458
+ var ErrPermit2612AmountMismatch = "permit2_2612_amount_mismatch";
459
+ var ErrErc20ApprovalInvalidFormat = "invalid_erc20_approval_extension_format";
460
+ var ErrErc20ApprovalFromMismatch = "erc20_approval_from_mismatch";
461
+ var ErrErc20ApprovalAssetMismatch = "erc20_approval_asset_mismatch";
462
+ var ErrErc20ApprovalSpenderNotPermit2 = "erc20_approval_spender_not_permit2";
463
+ var ErrErc20ApprovalTxWrongTarget = "erc20_approval_tx_wrong_target";
464
+ var ErrErc20ApprovalTxWrongSelector = "erc20_approval_tx_wrong_selector";
465
+ var ErrErc20ApprovalTxWrongSpender = "erc20_approval_tx_wrong_spender";
466
+ var ErrErc20ApprovalTxInvalidCalldata = "erc20_approval_tx_invalid_calldata";
467
+ var ErrErc20ApprovalTxSignerMismatch = "erc20_approval_tx_signer_mismatch";
468
+ var ErrErc20ApprovalTxInvalidSignature = "erc20_approval_tx_invalid_signature";
469
+ var ErrErc20ApprovalTxParseFailed = "erc20_approval_tx_parse_failed";
470
+ var ErrErc20ApprovalTxFailed = "erc20_approval_tx_failed";
471
+ var ErrInvalidEip2612ExtensionFormat = "invalid_eip2612_extension_format";
472
+ var ErrEip2612FromMismatch = "eip2612_from_mismatch";
473
+ var ErrEip2612AssetMismatch = "eip2612_asset_mismatch";
474
+ var ErrEip2612SpenderNotPermit2 = "eip2612_spender_not_permit2";
475
+ var ErrEip2612DeadlineExpired = "eip2612_deadline_expired";
476
+ var ErrUnsupportedPayloadType = "unsupported_payload_type";
477
+ var ErrInvalidTransactionState = "invalid_transaction_state";
478
+
479
+ // src/multicall.ts
480
+ import { encodeFunctionData, decodeFunctionResult } from "viem";
481
+ var MULTICALL3_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11";
482
+ var multicall3ABI = [
483
+ {
484
+ inputs: [
485
+ { name: "requireSuccess", type: "bool" },
486
+ {
487
+ name: "calls",
488
+ type: "tuple[]",
489
+ components: [
490
+ { name: "target", type: "address" },
491
+ { name: "callData", type: "bytes" }
492
+ ]
493
+ }
494
+ ],
495
+ name: "tryAggregate",
496
+ outputs: [
497
+ {
498
+ name: "returnData",
499
+ type: "tuple[]",
500
+ components: [
501
+ { name: "success", type: "bool" },
502
+ { name: "returnData", type: "bytes" }
503
+ ]
504
+ }
505
+ ],
506
+ stateMutability: "payable",
507
+ type: "function"
508
+ }
509
+ ];
510
+ async function multicall(readContract, calls) {
511
+ const aggregateCalls = calls.map((call) => {
512
+ if ("callData" in call) {
513
+ return { target: call.address, callData: call.callData };
514
+ }
515
+ const callData = encodeFunctionData({
516
+ abi: call.abi,
517
+ functionName: call.functionName,
518
+ args: call.args
519
+ });
520
+ return { target: call.address, callData };
521
+ });
522
+ const rawResults = await readContract({
523
+ address: MULTICALL3_ADDRESS,
524
+ abi: multicall3ABI,
525
+ functionName: "tryAggregate",
526
+ args: [false, aggregateCalls]
527
+ });
528
+ return rawResults.map((raw, i) => {
529
+ if (!raw.success) {
530
+ return {
531
+ status: "failure",
532
+ error: new Error(`multicall: call reverted (returnData: ${raw.returnData})`)
533
+ };
534
+ }
535
+ const call = calls[i];
536
+ if ("callData" in call) {
537
+ return { status: "success", result: void 0 };
538
+ }
539
+ try {
540
+ const decoded = decodeFunctionResult({
541
+ abi: call.abi,
542
+ functionName: call.functionName,
543
+ data: raw.returnData
544
+ });
545
+ return { status: "success", result: decoded };
546
+ } catch (err) {
547
+ return {
548
+ status: "failure",
549
+ error: err instanceof Error ? err : new Error(String(err))
550
+ };
551
+ }
552
+ });
553
+ }
554
+
555
+ export {
556
+ authorizationTypes,
557
+ permit2WitnessTypes,
558
+ uptoPermit2WitnessTypes,
559
+ eip3009ABI,
560
+ eip2612PermitTypes,
561
+ eip2612NoncesAbi,
562
+ erc20ApproveAbi,
563
+ erc20AllowanceAbi,
564
+ ERC20_APPROVE_GAS_LIMIT,
565
+ DEFAULT_MAX_FEE_PER_GAS,
566
+ DEFAULT_MAX_PRIORITY_FEE_PER_GAS,
567
+ PERMIT2_ADDRESS,
568
+ x402ExactPermit2ProxyAddress,
569
+ x402UptoPermit2ProxyAddress,
570
+ x402UptoPermit2ProxyABI,
571
+ x402ExactPermit2ProxyABI,
572
+ getEvmChainId,
573
+ createNonce,
574
+ createPermit2Nonce,
575
+ multicall,
576
+ ErrInvalidScheme,
577
+ ErrNetworkMismatch,
578
+ ErrMissingEip712Domain,
579
+ ErrRecipientMismatch,
580
+ ErrInvalidSignature,
581
+ ErrValidBeforeExpired,
582
+ ErrValidAfterInFuture,
583
+ ErrInvalidAuthorizationValue,
584
+ ErrUndeployedSmartWallet,
585
+ ErrTransactionFailed,
586
+ ErrEip3009TokenNameMismatch,
587
+ ErrEip3009TokenVersionMismatch,
588
+ ErrEip3009NotSupported,
589
+ ErrEip3009NonceAlreadyUsed,
590
+ ErrEip3009InsufficientBalance,
591
+ ErrEip3009SimulationFailed,
592
+ ErrPermit2InvalidSpender,
593
+ ErrPermit2RecipientMismatch,
594
+ ErrPermit2DeadlineExpired,
595
+ ErrPermit2NotYetValid,
596
+ ErrPermit2AmountMismatch,
597
+ ErrPermit2TokenMismatch,
598
+ ErrPermit2InvalidSignature,
599
+ ErrPermit2AllowanceRequired,
600
+ ErrPermit2SimulationFailed,
601
+ ErrPermit2InsufficientBalance,
602
+ ErrPermit2ProxyNotDeployed,
603
+ ErrPermit2InvalidAmount,
604
+ ErrPermit2InvalidDestination,
605
+ ErrPermit2InvalidOwner,
606
+ ErrPermit2PaymentTooEarly,
607
+ ErrPermit2InvalidNonce,
608
+ ErrPermit2612AmountMismatch,
609
+ ErrErc20ApprovalInvalidFormat,
610
+ ErrErc20ApprovalFromMismatch,
611
+ ErrErc20ApprovalAssetMismatch,
612
+ ErrErc20ApprovalSpenderNotPermit2,
613
+ ErrErc20ApprovalTxWrongTarget,
614
+ ErrErc20ApprovalTxWrongSelector,
615
+ ErrErc20ApprovalTxWrongSpender,
616
+ ErrErc20ApprovalTxInvalidCalldata,
617
+ ErrErc20ApprovalTxSignerMismatch,
618
+ ErrErc20ApprovalTxInvalidSignature,
619
+ ErrErc20ApprovalTxParseFailed,
620
+ ErrErc20ApprovalTxFailed,
621
+ ErrInvalidEip2612ExtensionFormat,
622
+ ErrEip2612FromMismatch,
623
+ ErrEip2612AssetMismatch,
624
+ ErrEip2612SpenderNotPermit2,
625
+ ErrEip2612DeadlineExpired,
626
+ ErrUnsupportedPayloadType,
627
+ ErrInvalidTransactionState
628
+ };
629
+ //# sourceMappingURL=chunk-C4ZQMS77.mjs.map