@circle-fin/usdckit 0.22.0 → 0.23.1

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 (77) hide show
  1. package/dist/cjs/abis/EIP2612.d.ts +197 -0
  2. package/dist/cjs/abis/EIP2612.js +78 -0
  3. package/dist/cjs/actions/index.d.ts +67 -1
  4. package/dist/cjs/actions/index.js +7 -0
  5. package/dist/cjs/actions/index.test.js +4 -0
  6. package/dist/cjs/actions/permit.d.ts +19 -0
  7. package/dist/cjs/actions/permit.js +50 -0
  8. package/dist/cjs/actions/permit.test.d.ts +1 -0
  9. package/dist/cjs/actions/permit.test.js +652 -0
  10. package/dist/cjs/actions/signEIP2612Permit.d.ts +130 -0
  11. package/dist/cjs/actions/signEIP2612Permit.js +128 -0
  12. package/dist/cjs/actions/signEIP2612Permit.test.d.ts +1 -0
  13. package/dist/cjs/actions/signEIP2612Permit.test.js +434 -0
  14. package/dist/cjs/chains/ARC_TESTNET.d.ts +180 -0
  15. package/dist/cjs/chains/ARC_TESTNET.js +57 -0
  16. package/dist/cjs/chains/index.d.ts +21 -18
  17. package/dist/cjs/chains/index.js +27 -25
  18. package/dist/cjs/chains/index.test.js +1 -0
  19. package/dist/cjs/client.d.ts +1 -1
  20. package/dist/cjs/extractChain.d.ts +1492 -1313
  21. package/dist/cjs/extractChain.test.js +1 -0
  22. package/dist/cjs/index.d.ts +2 -2
  23. package/dist/cjs/index.js +1 -1
  24. package/dist/cjs/metadata.js +1 -1
  25. package/dist/cjs/providers/circle-wallets/actions/createAccount.d.ts +1109 -930
  26. package/dist/cjs/providers/circle-wallets/actions/createAccount.js +3 -0
  27. package/dist/cjs/providers/circle-wallets/actions/estimateContractExecutionFee.d.ts +6 -0
  28. package/dist/cjs/providers/circle-wallets/actions/estimateTransferFee.d.ts +6 -0
  29. package/dist/cjs/providers/circle-wallets/actions/getAccounts.d.ts +1109 -930
  30. package/dist/cjs/providers/circle-wallets/index.d.ts +358 -0
  31. package/dist/cjs/providers/circle-wallets/index.js +2 -0
  32. package/dist/cjs/providers/circle-wallets/transports/index.d.ts +12 -0
  33. package/dist/cjs/utils/createConfig.d.ts +1 -1
  34. package/dist/cjs/utils/createCustomWalletClient.d.ts +1 -1
  35. package/dist/cjs/utils/getChainContractByAddress.d.ts +1 -1
  36. package/dist/cjs/utils/getContract.d.ts +8 -8
  37. package/dist/esm/abis/EIP2612.d.ts +197 -0
  38. package/dist/esm/abis/EIP2612.js +76 -0
  39. package/dist/esm/actions/index.d.ts +67 -1
  40. package/dist/esm/actions/index.js +7 -0
  41. package/dist/esm/actions/index.test.js +4 -0
  42. package/dist/esm/actions/permit.d.ts +19 -0
  43. package/dist/esm/actions/permit.js +44 -0
  44. package/dist/esm/actions/permit.test.d.ts +1 -0
  45. package/dist/esm/actions/permit.test.js +650 -0
  46. package/dist/esm/actions/signEIP2612Permit.d.ts +130 -0
  47. package/dist/esm/actions/signEIP2612Permit.js +122 -0
  48. package/dist/esm/actions/signEIP2612Permit.test.d.ts +1 -0
  49. package/dist/esm/actions/signEIP2612Permit.test.js +432 -0
  50. package/dist/esm/chains/ARC_TESTNET.d.ts +180 -0
  51. package/dist/esm/chains/ARC_TESTNET.js +54 -0
  52. package/dist/esm/chains/index.d.ts +21 -18
  53. package/dist/esm/chains/index.js +20 -18
  54. package/dist/esm/chains/index.test.js +1 -0
  55. package/dist/esm/client.d.ts +1 -1
  56. package/dist/esm/extractChain.d.ts +1492 -1313
  57. package/dist/esm/extractChain.test.js +2 -1
  58. package/dist/esm/index.d.ts +2 -2
  59. package/dist/esm/index.js +1 -1
  60. package/dist/esm/metadata.js +1 -1
  61. package/dist/esm/providers/circle-wallets/actions/createAccount.d.ts +1109 -930
  62. package/dist/esm/providers/circle-wallets/actions/createAccount.js +3 -0
  63. package/dist/esm/providers/circle-wallets/actions/estimateContractExecutionFee.d.ts +6 -0
  64. package/dist/esm/providers/circle-wallets/actions/estimateTransferFee.d.ts +6 -0
  65. package/dist/esm/providers/circle-wallets/actions/getAccounts.d.ts +1109 -930
  66. package/dist/esm/providers/circle-wallets/index.d.ts +358 -0
  67. package/dist/esm/providers/circle-wallets/index.js +3 -1
  68. package/dist/esm/providers/circle-wallets/transports/index.d.ts +12 -0
  69. package/dist/esm/utils/createConfig.d.ts +1 -1
  70. package/dist/esm/utils/createCustomWalletClient.d.ts +1 -1
  71. package/dist/esm/utils/getChainContractByAddress.d.ts +1 -1
  72. package/dist/esm/utils/getContract.d.ts +8 -8
  73. package/package.json +5 -4
  74. package/dist/cjs/chains.d.ts +0 -2
  75. package/dist/cjs/chains.js +0 -12
  76. package/dist/esm/chains.d.ts +0 -2
  77. package/dist/esm/chains.js +0 -11
@@ -0,0 +1,652 @@
1
+ "use strict";
2
+ // Copyright (c) 2025, Circle Internet Group, Inc.
3
+ // All rights reserved.
4
+ //
5
+ // Circle Internet Group, Inc. CONFIDENTIAL
6
+ //
7
+ // This file includes unpublished proprietary source code of Circle Internet
8
+ // Group, Inc. The copyright notice above does not
9
+ // evidence any actual or intended publication of such source code. Disclosure
10
+ // of this source code or any related proprietary information is strictly
11
+ // prohibited without the express written permission of Circle Internet Group, Inc.
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const viem_1 = require("viem");
14
+ const utils_1 = require("viem/utils");
15
+ const vitest_1 = require("vitest");
16
+ const index_js_1 = require("../chains/index.js");
17
+ const permit_js_1 = require("./permit.js");
18
+ const signEIP2612Permit_js_1 = require("./signEIP2612Permit.js");
19
+ const client = {
20
+ chain: index_js_1.ETH_SEPOLIA,
21
+ };
22
+ const account = '0x1234567890abcdef1234567890abcdef12345678';
23
+ const spender = '0x8765432109876543210987654321098765432109';
24
+ const tokenAddress = index_js_1.ETH_SEPOLIA.contracts.USDC.address;
25
+ vitest_1.vi.mock('viem', async (importOriginal) => ({
26
+ ...(await importOriginal()),
27
+ createPublicClient: vitest_1.vi.fn(() => ({
28
+ simulateContract: vitest_1.vi.fn().mockResolvedValue({
29
+ request: {
30
+ address: tokenAddress,
31
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
32
+ abi: vitest_1.expect.any(Array),
33
+ functionName: 'permit',
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
35
+ args: vitest_1.expect.any(Array),
36
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
37
+ account: vitest_1.expect.objectContaining({ address: account }),
38
+ },
39
+ }),
40
+ })),
41
+ http: vitest_1.vi.fn(() => ({})),
42
+ }));
43
+ vitest_1.vi.mock('viem/utils', () => ({
44
+ getAction: vitest_1.vi.fn(),
45
+ }));
46
+ vitest_1.vi.mock('./signEIP2612Permit.js', () => ({
47
+ signEIP2612Permit: vitest_1.vi.fn(),
48
+ }));
49
+ (0, vitest_1.describe)(`${permit_js_1.permit.name}`, () => {
50
+ (0, vitest_1.beforeEach)(() => {
51
+ vitest_1.vi.restoreAllMocks();
52
+ });
53
+ vitest_1.test.each([
54
+ [
55
+ // Basic permit with NativeUnits
56
+ {
57
+ token: tokenAddress,
58
+ owner: account,
59
+ spender,
60
+ value: '1.0',
61
+ },
62
+ '0xpermitTransactionHash',
63
+ // signEIP2612Permit call
64
+ [
65
+ {
66
+ token: tokenAddress,
67
+ owner: account,
68
+ spender,
69
+ value: '1.0',
70
+ },
71
+ {
72
+ typedData: {
73
+ types: {
74
+ EIP712Domain: [
75
+ { name: 'name', type: 'string' },
76
+ { name: 'version', type: 'string' },
77
+ { name: 'chainId', type: 'uint256' },
78
+ { name: 'verifyingContract', type: 'address' },
79
+ ],
80
+ Permit: [
81
+ { name: 'owner', type: 'address' },
82
+ { name: 'spender', type: 'address' },
83
+ { name: 'value', type: 'uint256' },
84
+ { name: 'nonce', type: 'uint256' },
85
+ { name: 'deadline', type: 'uint256' },
86
+ ],
87
+ },
88
+ primaryType: 'Permit',
89
+ domain: {
90
+ name: 'USD Coin',
91
+ version: '2',
92
+ chainId: BigInt(index_js_1.ETH_SEPOLIA.id),
93
+ verifyingContract: tokenAddress,
94
+ },
95
+ message: {
96
+ owner: account,
97
+ spender,
98
+ value: 1000000n,
99
+ nonce: 321n,
100
+ deadline: viem_1.maxUint256,
101
+ },
102
+ },
103
+ signature: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
104
+ v: 27,
105
+ r: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
106
+ s: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
107
+ yParity: 0,
108
+ },
109
+ ],
110
+ // simulateContract call
111
+ [
112
+ {
113
+ address: tokenAddress,
114
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
115
+ abi: vitest_1.expect.any(Array),
116
+ functionName: 'permit',
117
+ args: [
118
+ account,
119
+ spender,
120
+ 1000000n,
121
+ viem_1.maxUint256,
122
+ 27,
123
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
124
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
125
+ ],
126
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
127
+ account: vitest_1.expect.objectContaining({ address: account }),
128
+ gas: undefined,
129
+ },
130
+ {
131
+ request: {
132
+ address: tokenAddress,
133
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
134
+ abi: vitest_1.expect.any(Array),
135
+ functionName: 'permit',
136
+ args: [
137
+ account,
138
+ spender,
139
+ 1000000n,
140
+ viem_1.maxUint256,
141
+ 27,
142
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
143
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
144
+ ],
145
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
146
+ account: vitest_1.expect.objectContaining({ address: account }),
147
+ },
148
+ },
149
+ ],
150
+ // writeContract call
151
+ [
152
+ {
153
+ address: tokenAddress,
154
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
155
+ abi: vitest_1.expect.any(Array),
156
+ functionName: 'permit',
157
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
158
+ args: vitest_1.expect.any(Array),
159
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
160
+ account: vitest_1.expect.objectContaining({ address: account }),
161
+ chain: index_js_1.ETH_SEPOLIA,
162
+ },
163
+ '0xpermitTransactionHash',
164
+ ],
165
+ ],
166
+ [
167
+ // Permit with BaseUnits
168
+ {
169
+ token: tokenAddress,
170
+ owner: account,
171
+ spender,
172
+ value: 1000000n,
173
+ },
174
+ '0xpermitTransactionHash',
175
+ // signEIP2612Permit call
176
+ [
177
+ {
178
+ token: tokenAddress,
179
+ owner: account,
180
+ spender,
181
+ value: 1000000n,
182
+ },
183
+ {
184
+ typedData: {
185
+ types: {
186
+ EIP712Domain: [
187
+ { name: 'name', type: 'string' },
188
+ { name: 'version', type: 'string' },
189
+ { name: 'chainId', type: 'uint256' },
190
+ { name: 'verifyingContract', type: 'address' },
191
+ ],
192
+ Permit: [
193
+ { name: 'owner', type: 'address' },
194
+ { name: 'spender', type: 'address' },
195
+ { name: 'value', type: 'uint256' },
196
+ { name: 'nonce', type: 'uint256' },
197
+ { name: 'deadline', type: 'uint256' },
198
+ ],
199
+ },
200
+ primaryType: 'Permit',
201
+ domain: {
202
+ name: 'USD Coin',
203
+ version: '2',
204
+ chainId: BigInt(index_js_1.ETH_SEPOLIA.id),
205
+ verifyingContract: tokenAddress,
206
+ },
207
+ message: {
208
+ owner: account,
209
+ spender,
210
+ value: 1000000n,
211
+ nonce: 321n,
212
+ deadline: viem_1.maxUint256,
213
+ },
214
+ },
215
+ signature: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
216
+ v: 27,
217
+ r: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
218
+ s: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
219
+ yParity: 0,
220
+ },
221
+ ],
222
+ // simulateContract call
223
+ [
224
+ {
225
+ address: tokenAddress,
226
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
227
+ abi: vitest_1.expect.any(Array),
228
+ functionName: 'permit',
229
+ args: [
230
+ account,
231
+ spender,
232
+ 1000000n,
233
+ viem_1.maxUint256,
234
+ 27,
235
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
236
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
237
+ ],
238
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
239
+ account: vitest_1.expect.objectContaining({ address: account }),
240
+ gas: undefined,
241
+ },
242
+ {
243
+ request: {
244
+ address: tokenAddress,
245
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
246
+ abi: vitest_1.expect.any(Array),
247
+ functionName: 'permit',
248
+ args: [
249
+ account,
250
+ spender,
251
+ 1000000n,
252
+ viem_1.maxUint256,
253
+ 27,
254
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
255
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
256
+ ],
257
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
258
+ account: vitest_1.expect.objectContaining({ address: account }),
259
+ },
260
+ },
261
+ ],
262
+ // writeContract call
263
+ [
264
+ {
265
+ address: tokenAddress,
266
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
267
+ abi: vitest_1.expect.any(Array),
268
+ functionName: 'permit',
269
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
270
+ args: vitest_1.expect.any(Array),
271
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
272
+ account: vitest_1.expect.objectContaining({ address: account }),
273
+ chain: index_js_1.ETH_SEPOLIA,
274
+ },
275
+ '0xpermitTransactionHash',
276
+ ],
277
+ ],
278
+ [
279
+ // Permit with gas and fees
280
+ {
281
+ token: tokenAddress,
282
+ owner: account,
283
+ spender,
284
+ value: '1.0',
285
+ gas: 50000n,
286
+ fees: {
287
+ maxFeePerGas: 20000000000n,
288
+ maxPriorityFeePerGas: 1000000000n,
289
+ },
290
+ },
291
+ '0xpermitTransactionHash',
292
+ // signEIP2612Permit call
293
+ [
294
+ {
295
+ token: tokenAddress,
296
+ owner: account,
297
+ spender,
298
+ value: '1.0',
299
+ gas: 50000n,
300
+ fees: {
301
+ maxFeePerGas: 20000000000n,
302
+ maxPriorityFeePerGas: 1000000000n,
303
+ },
304
+ },
305
+ {
306
+ typedData: {
307
+ types: {
308
+ EIP712Domain: [
309
+ { name: 'name', type: 'string' },
310
+ { name: 'version', type: 'string' },
311
+ { name: 'chainId', type: 'uint256' },
312
+ { name: 'verifyingContract', type: 'address' },
313
+ ],
314
+ Permit: [
315
+ { name: 'owner', type: 'address' },
316
+ { name: 'spender', type: 'address' },
317
+ { name: 'value', type: 'uint256' },
318
+ { name: 'nonce', type: 'uint256' },
319
+ { name: 'deadline', type: 'uint256' },
320
+ ],
321
+ },
322
+ primaryType: 'Permit',
323
+ domain: {
324
+ name: 'USD Coin',
325
+ version: '2',
326
+ chainId: BigInt(index_js_1.ETH_SEPOLIA.id),
327
+ verifyingContract: tokenAddress,
328
+ },
329
+ message: {
330
+ owner: account,
331
+ spender,
332
+ value: 1000000n,
333
+ nonce: 321n,
334
+ deadline: viem_1.maxUint256,
335
+ },
336
+ },
337
+ signature: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
338
+ v: 27,
339
+ r: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
340
+ s: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
341
+ yParity: 0,
342
+ },
343
+ ],
344
+ // simulateContract call
345
+ [
346
+ {
347
+ address: tokenAddress,
348
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
349
+ abi: vitest_1.expect.any(Array),
350
+ functionName: 'permit',
351
+ args: [
352
+ account,
353
+ spender,
354
+ 1000000n,
355
+ viem_1.maxUint256,
356
+ 27,
357
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
358
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
359
+ ],
360
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
361
+ account: vitest_1.expect.objectContaining({ address: account }),
362
+ gas: 50000n,
363
+ maxFeePerGas: 20000000000n,
364
+ maxPriorityFeePerGas: 1000000000n,
365
+ },
366
+ {
367
+ request: {
368
+ address: tokenAddress,
369
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
370
+ abi: vitest_1.expect.any(Array),
371
+ functionName: 'permit',
372
+ args: [
373
+ account,
374
+ spender,
375
+ 1000000n,
376
+ viem_1.maxUint256,
377
+ 27,
378
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
379
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
380
+ ],
381
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
382
+ account: vitest_1.expect.objectContaining({ address: account }),
383
+ gas: 50000n,
384
+ maxFeePerGas: 20000000000n,
385
+ maxPriorityFeePerGas: 1000000000n,
386
+ },
387
+ },
388
+ ],
389
+ // writeContract call
390
+ [
391
+ {
392
+ address: tokenAddress,
393
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
394
+ abi: vitest_1.expect.any(Array),
395
+ functionName: 'permit',
396
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
397
+ args: vitest_1.expect.any(Array),
398
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
399
+ account: vitest_1.expect.objectContaining({ address: account }),
400
+ chain: index_js_1.ETH_SEPOLIA,
401
+ gas: 50000n,
402
+ maxFeePerGas: 20000000000n,
403
+ maxPriorityFeePerGas: 1000000000n,
404
+ },
405
+ '0xpermitTransactionHash',
406
+ ],
407
+ ],
408
+ [
409
+ // Permit with contract object token
410
+ {
411
+ token: { address: tokenAddress },
412
+ owner: account,
413
+ spender,
414
+ value: '1.0',
415
+ },
416
+ '0xpermitTransactionHash',
417
+ // signEIP2612Permit call
418
+ [
419
+ {
420
+ token: { address: tokenAddress },
421
+ owner: account,
422
+ spender,
423
+ value: '1.0',
424
+ },
425
+ {
426
+ typedData: {
427
+ types: {
428
+ EIP712Domain: [
429
+ { name: 'name', type: 'string' },
430
+ { name: 'version', type: 'string' },
431
+ { name: 'chainId', type: 'uint256' },
432
+ { name: 'verifyingContract', type: 'address' },
433
+ ],
434
+ Permit: [
435
+ { name: 'owner', type: 'address' },
436
+ { name: 'spender', type: 'address' },
437
+ { name: 'value', type: 'uint256' },
438
+ { name: 'nonce', type: 'uint256' },
439
+ { name: 'deadline', type: 'uint256' },
440
+ ],
441
+ },
442
+ primaryType: 'Permit',
443
+ domain: {
444
+ name: 'USD Coin',
445
+ version: '2',
446
+ chainId: BigInt(index_js_1.ETH_SEPOLIA.id),
447
+ verifyingContract: tokenAddress,
448
+ },
449
+ message: {
450
+ owner: account,
451
+ spender,
452
+ value: 1000000n,
453
+ nonce: 321n,
454
+ deadline: viem_1.maxUint256,
455
+ },
456
+ },
457
+ signature: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
458
+ v: 27,
459
+ r: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
460
+ s: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
461
+ yParity: 0,
462
+ },
463
+ ],
464
+ // simulateContract call
465
+ [
466
+ {
467
+ address: tokenAddress,
468
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
469
+ abi: vitest_1.expect.any(Array),
470
+ functionName: 'permit',
471
+ args: [
472
+ account,
473
+ spender,
474
+ 1000000n,
475
+ viem_1.maxUint256,
476
+ 27,
477
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
478
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
479
+ ],
480
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
481
+ account: vitest_1.expect.objectContaining({ address: account }),
482
+ gas: undefined,
483
+ },
484
+ {
485
+ request: {
486
+ address: tokenAddress,
487
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
488
+ abi: vitest_1.expect.any(Array),
489
+ functionName: 'permit',
490
+ args: [
491
+ account,
492
+ spender,
493
+ 1000000n,
494
+ viem_1.maxUint256,
495
+ 27,
496
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
497
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
498
+ ],
499
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
500
+ account: vitest_1.expect.objectContaining({ address: account }),
501
+ },
502
+ },
503
+ ],
504
+ // writeContract call
505
+ [
506
+ {
507
+ address: tokenAddress,
508
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
509
+ abi: vitest_1.expect.any(Array),
510
+ functionName: 'permit',
511
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
512
+ args: vitest_1.expect.any(Array),
513
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
514
+ account: vitest_1.expect.objectContaining({ address: account }),
515
+ chain: index_js_1.ETH_SEPOLIA,
516
+ },
517
+ '0xpermitTransactionHash',
518
+ ],
519
+ ],
520
+ [
521
+ // Permit with custom deadline
522
+ {
523
+ token: tokenAddress,
524
+ owner: account,
525
+ spender,
526
+ value: '1.0',
527
+ deadline: 1234567890n,
528
+ },
529
+ '0xpermitTransactionHash',
530
+ // signEIP2612Permit
531
+ [
532
+ {
533
+ token: tokenAddress,
534
+ owner: account,
535
+ spender,
536
+ value: '1.0',
537
+ deadline: 1234567890n,
538
+ },
539
+ {
540
+ typedData: {
541
+ types: {
542
+ EIP712Domain: [
543
+ { name: 'name', type: 'string' },
544
+ { name: 'version', type: 'string' },
545
+ { name: 'chainId', type: 'uint256' },
546
+ { name: 'verifyingContract', type: 'address' },
547
+ ],
548
+ Permit: [
549
+ { name: 'owner', type: 'address' },
550
+ { name: 'spender', type: 'address' },
551
+ { name: 'value', type: 'uint256' },
552
+ { name: 'nonce', type: 'uint256' },
553
+ { name: 'deadline', type: 'uint256' },
554
+ ],
555
+ },
556
+ primaryType: 'Permit',
557
+ domain: {
558
+ name: 'USD Coin',
559
+ version: '2',
560
+ chainId: BigInt(index_js_1.ETH_SEPOLIA.id),
561
+ verifyingContract: tokenAddress,
562
+ },
563
+ message: {
564
+ owner: account,
565
+ spender,
566
+ value: 1000000n,
567
+ nonce: 321n,
568
+ deadline: 1234567890n,
569
+ },
570
+ },
571
+ signature: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
572
+ v: 27,
573
+ r: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
574
+ s: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
575
+ yParity: 0,
576
+ },
577
+ ],
578
+ // simulateContract
579
+ [
580
+ {
581
+ address: tokenAddress,
582
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
583
+ abi: vitest_1.expect.any(Array),
584
+ functionName: 'permit',
585
+ args: [
586
+ account,
587
+ spender,
588
+ 1000000n,
589
+ 1234567890n,
590
+ 27,
591
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
592
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
593
+ ],
594
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
595
+ account: vitest_1.expect.objectContaining({ address: account }),
596
+ gas: undefined,
597
+ },
598
+ {
599
+ request: {
600
+ address: tokenAddress,
601
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
602
+ abi: vitest_1.expect.any(Array),
603
+ functionName: 'permit',
604
+ args: [
605
+ account,
606
+ spender,
607
+ 1000000n,
608
+ 1234567890n,
609
+ 27,
610
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
611
+ '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
612
+ ],
613
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
614
+ account: vitest_1.expect.objectContaining({ address: account }),
615
+ gas: undefined,
616
+ },
617
+ },
618
+ ],
619
+ // writeContract call
620
+ [
621
+ {
622
+ address: tokenAddress,
623
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
624
+ abi: vitest_1.expect.any(Array),
625
+ functionName: 'permit',
626
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
627
+ args: vitest_1.expect.any(Array),
628
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
629
+ account: vitest_1.expect.objectContaining({ address: account }),
630
+ chain: index_js_1.ETH_SEPOLIA,
631
+ },
632
+ '0xpermitTransactionHash',
633
+ ],
634
+ ],
635
+ ])('should return successfully', async (params, expectedResult, [signEIP2612PermitMockInput, signEIP2612PermitMockOutput], [simulateContractMockInput, simulateContractMockOutput], [writeContractMockInput, writeContractMockOutput]) => {
636
+ vitest_1.vi.mocked(signEIP2612Permit_js_1.signEIP2612Permit).mockResolvedValueOnce(signEIP2612PermitMockOutput);
637
+ // Mock getAction for simulateContract and writeContract
638
+ const mockSimulateContract = vitest_1.vi.fn().mockResolvedValue(simulateContractMockOutput);
639
+ const mockWriteContract = vitest_1.vi.fn().mockResolvedValue(writeContractMockOutput);
640
+ vitest_1.vi.mocked(utils_1.getAction)
641
+ .mockReturnValueOnce(mockSimulateContract) // simulateContract
642
+ .mockReturnValueOnce(mockWriteContract); // writeContract
643
+ // Execute the function
644
+ await (0, vitest_1.expect)((0, permit_js_1.permit)(client, params)).resolves.toEqual(expectedResult);
645
+ // Verify signEIP2612Permit was called correctly
646
+ (0, vitest_1.expect)(signEIP2612Permit_js_1.signEIP2612Permit).toHaveBeenCalledWith(client, signEIP2612PermitMockInput);
647
+ // Verify simulateContract was called correctly
648
+ (0, vitest_1.expect)(mockSimulateContract).toHaveBeenCalledWith(simulateContractMockInput);
649
+ // Verify writeContract was called correctly
650
+ (0, vitest_1.expect)(mockWriteContract).toHaveBeenCalledWith(writeContractMockInput);
651
+ });
652
+ });