@juicedollar/jusd 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +356 -0
  3. package/contracts/Equity.sol +457 -0
  4. package/contracts/JuiceDollar.sol +363 -0
  5. package/contracts/Leadrate.sol +79 -0
  6. package/contracts/MintingHubV2/MintingHub.sol +445 -0
  7. package/contracts/MintingHubV2/Position.sol +810 -0
  8. package/contracts/MintingHubV2/PositionFactory.sol +69 -0
  9. package/contracts/MintingHubV2/PositionRoller.sol +159 -0
  10. package/contracts/MintingHubV2/interface/IMintingHub.sol +26 -0
  11. package/contracts/MintingHubV2/interface/IPosition.sol +90 -0
  12. package/contracts/MintingHubV2/interface/IPositionFactory.sol +20 -0
  13. package/contracts/Savings.sol +141 -0
  14. package/contracts/SavingsVaultJUSD.sol +140 -0
  15. package/contracts/StablecoinBridge.sol +109 -0
  16. package/contracts/StartUSD.sol +16 -0
  17. package/contracts/gateway/CoinLendingGateway.sol +223 -0
  18. package/contracts/gateway/FrontendGateway.sol +224 -0
  19. package/contracts/gateway/MintingHubGateway.sol +87 -0
  20. package/contracts/gateway/SavingsGateway.sol +51 -0
  21. package/contracts/gateway/interface/ICoinLendingGateway.sol +73 -0
  22. package/contracts/gateway/interface/IFrontendGateway.sol +49 -0
  23. package/contracts/gateway/interface/IMintingHubGateway.sol +12 -0
  24. package/contracts/impl/ERC3009.sol +171 -0
  25. package/contracts/interface/IJuiceDollar.sol +54 -0
  26. package/contracts/interface/ILeadrate.sol +7 -0
  27. package/contracts/interface/IReserve.sol +9 -0
  28. package/contracts/interface/ISavingsJUSD.sol +49 -0
  29. package/contracts/test/FreakToken.sol +25 -0
  30. package/contracts/test/Math.sol +339 -0
  31. package/contracts/test/MockEquity.sol +15 -0
  32. package/contracts/test/PositionExpirationTest.sol +75 -0
  33. package/contracts/test/PositionRollingTest.sol +65 -0
  34. package/contracts/test/TestFlashLoan.sol +84 -0
  35. package/contracts/test/TestFlashLoanGateway.sol +49 -0
  36. package/contracts/test/TestMathUtil.sol +40 -0
  37. package/contracts/test/TestToken.sol +45 -0
  38. package/contracts/test/TestWcBTC.sol +35 -0
  39. package/contracts/utils/MathUtil.sol +61 -0
  40. package/dist/index.d.mts +8761 -0
  41. package/dist/index.d.ts +8761 -0
  42. package/dist/index.js +11119 -0
  43. package/dist/index.mjs +11073 -0
  44. package/exports/abis/MintingHubV2/PositionFactoryV2.ts +90 -0
  45. package/exports/abis/MintingHubV2/PositionRoller.ts +183 -0
  46. package/exports/abis/MintingHubV2/PositionV2.ts +999 -0
  47. package/exports/abis/core/CoinLendingGateway.ts +427 -0
  48. package/exports/abis/core/Equity.ts +1286 -0
  49. package/exports/abis/core/FrontendGateway.ts +906 -0
  50. package/exports/abis/core/JuiceDollar.ts +1366 -0
  51. package/exports/abis/core/MintingHubGateway.ts +865 -0
  52. package/exports/abis/core/SavingsGateway.ts +559 -0
  53. package/exports/abis/core/SavingsVaultJUSD.ts +920 -0
  54. package/exports/abis/utils/ERC20.ts +310 -0
  55. package/exports/abis/utils/ERC20PermitLight.ts +520 -0
  56. package/exports/abis/utils/Leadrate.ts +175 -0
  57. package/exports/abis/utils/MintingHubV2.ts +682 -0
  58. package/exports/abis/utils/Ownable.ts +76 -0
  59. package/exports/abis/utils/Savings.ts +453 -0
  60. package/exports/abis/utils/StablecoinBridge.ts +209 -0
  61. package/exports/abis/utils/StartUSD.ts +315 -0
  62. package/exports/abis/utils/UniswapV3Pool.ts +638 -0
  63. package/exports/address.config.ts +48 -0
  64. package/exports/index.ts +28 -0
  65. package/package.json +87 -0
@@ -0,0 +1,920 @@
1
+ export const SavingsVaultJUSDABI = [
2
+ {
3
+ inputs: [
4
+ {
5
+ internalType: 'contract IERC20',
6
+ name: '_coin',
7
+ type: 'address',
8
+ },
9
+ {
10
+ internalType: 'contract ISavingsJUSD',
11
+ name: '_savings',
12
+ type: 'address',
13
+ },
14
+ {
15
+ internalType: 'string',
16
+ name: '_name',
17
+ type: 'string',
18
+ },
19
+ {
20
+ internalType: 'string',
21
+ name: '_symbol',
22
+ type: 'string',
23
+ },
24
+ ],
25
+ stateMutability: 'nonpayable',
26
+ type: 'constructor',
27
+ },
28
+ {
29
+ inputs: [
30
+ {
31
+ internalType: 'address',
32
+ name: 'spender',
33
+ type: 'address',
34
+ },
35
+ {
36
+ internalType: 'uint256',
37
+ name: 'allowance',
38
+ type: 'uint256',
39
+ },
40
+ {
41
+ internalType: 'uint256',
42
+ name: 'needed',
43
+ type: 'uint256',
44
+ },
45
+ ],
46
+ name: 'ERC20InsufficientAllowance',
47
+ type: 'error',
48
+ },
49
+ {
50
+ inputs: [
51
+ {
52
+ internalType: 'address',
53
+ name: 'sender',
54
+ type: 'address',
55
+ },
56
+ {
57
+ internalType: 'uint256',
58
+ name: 'balance',
59
+ type: 'uint256',
60
+ },
61
+ {
62
+ internalType: 'uint256',
63
+ name: 'needed',
64
+ type: 'uint256',
65
+ },
66
+ ],
67
+ name: 'ERC20InsufficientBalance',
68
+ type: 'error',
69
+ },
70
+ {
71
+ inputs: [
72
+ {
73
+ internalType: 'address',
74
+ name: 'approver',
75
+ type: 'address',
76
+ },
77
+ ],
78
+ name: 'ERC20InvalidApprover',
79
+ type: 'error',
80
+ },
81
+ {
82
+ inputs: [
83
+ {
84
+ internalType: 'address',
85
+ name: 'receiver',
86
+ type: 'address',
87
+ },
88
+ ],
89
+ name: 'ERC20InvalidReceiver',
90
+ type: 'error',
91
+ },
92
+ {
93
+ inputs: [
94
+ {
95
+ internalType: 'address',
96
+ name: 'sender',
97
+ type: 'address',
98
+ },
99
+ ],
100
+ name: 'ERC20InvalidSender',
101
+ type: 'error',
102
+ },
103
+ {
104
+ inputs: [
105
+ {
106
+ internalType: 'address',
107
+ name: 'spender',
108
+ type: 'address',
109
+ },
110
+ ],
111
+ name: 'ERC20InvalidSpender',
112
+ type: 'error',
113
+ },
114
+ {
115
+ inputs: [
116
+ {
117
+ internalType: 'address',
118
+ name: 'receiver',
119
+ type: 'address',
120
+ },
121
+ {
122
+ internalType: 'uint256',
123
+ name: 'assets',
124
+ type: 'uint256',
125
+ },
126
+ {
127
+ internalType: 'uint256',
128
+ name: 'max',
129
+ type: 'uint256',
130
+ },
131
+ ],
132
+ name: 'ERC4626ExceededMaxDeposit',
133
+ type: 'error',
134
+ },
135
+ {
136
+ inputs: [
137
+ {
138
+ internalType: 'address',
139
+ name: 'receiver',
140
+ type: 'address',
141
+ },
142
+ {
143
+ internalType: 'uint256',
144
+ name: 'shares',
145
+ type: 'uint256',
146
+ },
147
+ {
148
+ internalType: 'uint256',
149
+ name: 'max',
150
+ type: 'uint256',
151
+ },
152
+ ],
153
+ name: 'ERC4626ExceededMaxMint',
154
+ type: 'error',
155
+ },
156
+ {
157
+ inputs: [
158
+ {
159
+ internalType: 'address',
160
+ name: 'owner',
161
+ type: 'address',
162
+ },
163
+ {
164
+ internalType: 'uint256',
165
+ name: 'shares',
166
+ type: 'uint256',
167
+ },
168
+ {
169
+ internalType: 'uint256',
170
+ name: 'max',
171
+ type: 'uint256',
172
+ },
173
+ ],
174
+ name: 'ERC4626ExceededMaxRedeem',
175
+ type: 'error',
176
+ },
177
+ {
178
+ inputs: [
179
+ {
180
+ internalType: 'address',
181
+ name: 'owner',
182
+ type: 'address',
183
+ },
184
+ {
185
+ internalType: 'uint256',
186
+ name: 'assets',
187
+ type: 'uint256',
188
+ },
189
+ {
190
+ internalType: 'uint256',
191
+ name: 'max',
192
+ type: 'uint256',
193
+ },
194
+ ],
195
+ name: 'ERC4626ExceededMaxWithdraw',
196
+ type: 'error',
197
+ },
198
+ {
199
+ inputs: [
200
+ {
201
+ internalType: 'uint8',
202
+ name: 'bits',
203
+ type: 'uint8',
204
+ },
205
+ {
206
+ internalType: 'uint256',
207
+ name: 'value',
208
+ type: 'uint256',
209
+ },
210
+ ],
211
+ name: 'SafeCastOverflowedUintDowncast',
212
+ type: 'error',
213
+ },
214
+ {
215
+ inputs: [
216
+ {
217
+ internalType: 'address',
218
+ name: 'token',
219
+ type: 'address',
220
+ },
221
+ ],
222
+ name: 'SafeERC20FailedOperation',
223
+ type: 'error',
224
+ },
225
+ {
226
+ anonymous: false,
227
+ inputs: [
228
+ {
229
+ indexed: true,
230
+ internalType: 'address',
231
+ name: 'owner',
232
+ type: 'address',
233
+ },
234
+ {
235
+ indexed: true,
236
+ internalType: 'address',
237
+ name: 'spender',
238
+ type: 'address',
239
+ },
240
+ {
241
+ indexed: false,
242
+ internalType: 'uint256',
243
+ name: 'value',
244
+ type: 'uint256',
245
+ },
246
+ ],
247
+ name: 'Approval',
248
+ type: 'event',
249
+ },
250
+ {
251
+ anonymous: false,
252
+ inputs: [
253
+ {
254
+ indexed: true,
255
+ internalType: 'address',
256
+ name: 'sender',
257
+ type: 'address',
258
+ },
259
+ {
260
+ indexed: true,
261
+ internalType: 'address',
262
+ name: 'owner',
263
+ type: 'address',
264
+ },
265
+ {
266
+ indexed: false,
267
+ internalType: 'uint256',
268
+ name: 'assets',
269
+ type: 'uint256',
270
+ },
271
+ {
272
+ indexed: false,
273
+ internalType: 'uint256',
274
+ name: 'shares',
275
+ type: 'uint256',
276
+ },
277
+ ],
278
+ name: 'Deposit',
279
+ type: 'event',
280
+ },
281
+ {
282
+ anonymous: false,
283
+ inputs: [
284
+ {
285
+ indexed: false,
286
+ internalType: 'uint256',
287
+ name: 'interest',
288
+ type: 'uint256',
289
+ },
290
+ {
291
+ indexed: false,
292
+ internalType: 'uint256',
293
+ name: 'totalClaimed',
294
+ type: 'uint256',
295
+ },
296
+ ],
297
+ name: 'InterestClaimed',
298
+ type: 'event',
299
+ },
300
+ {
301
+ anonymous: false,
302
+ inputs: [
303
+ {
304
+ indexed: true,
305
+ internalType: 'address',
306
+ name: 'from',
307
+ type: 'address',
308
+ },
309
+ {
310
+ indexed: true,
311
+ internalType: 'address',
312
+ name: 'to',
313
+ type: 'address',
314
+ },
315
+ {
316
+ indexed: false,
317
+ internalType: 'uint256',
318
+ name: 'value',
319
+ type: 'uint256',
320
+ },
321
+ ],
322
+ name: 'Transfer',
323
+ type: 'event',
324
+ },
325
+ {
326
+ anonymous: false,
327
+ inputs: [
328
+ {
329
+ indexed: true,
330
+ internalType: 'address',
331
+ name: 'sender',
332
+ type: 'address',
333
+ },
334
+ {
335
+ indexed: true,
336
+ internalType: 'address',
337
+ name: 'receiver',
338
+ type: 'address',
339
+ },
340
+ {
341
+ indexed: true,
342
+ internalType: 'address',
343
+ name: 'owner',
344
+ type: 'address',
345
+ },
346
+ {
347
+ indexed: false,
348
+ internalType: 'uint256',
349
+ name: 'assets',
350
+ type: 'uint256',
351
+ },
352
+ {
353
+ indexed: false,
354
+ internalType: 'uint256',
355
+ name: 'shares',
356
+ type: 'uint256',
357
+ },
358
+ ],
359
+ name: 'Withdraw',
360
+ type: 'event',
361
+ },
362
+ {
363
+ inputs: [],
364
+ name: 'SAVINGS',
365
+ outputs: [
366
+ {
367
+ internalType: 'contract ISavingsJUSD',
368
+ name: '',
369
+ type: 'address',
370
+ },
371
+ ],
372
+ stateMutability: 'view',
373
+ type: 'function',
374
+ },
375
+ {
376
+ inputs: [
377
+ {
378
+ internalType: 'address',
379
+ name: 'owner',
380
+ type: 'address',
381
+ },
382
+ {
383
+ internalType: 'address',
384
+ name: 'spender',
385
+ type: 'address',
386
+ },
387
+ ],
388
+ name: 'allowance',
389
+ outputs: [
390
+ {
391
+ internalType: 'uint256',
392
+ name: '',
393
+ type: 'uint256',
394
+ },
395
+ ],
396
+ stateMutability: 'view',
397
+ type: 'function',
398
+ },
399
+ {
400
+ inputs: [
401
+ {
402
+ internalType: 'address',
403
+ name: 'spender',
404
+ type: 'address',
405
+ },
406
+ {
407
+ internalType: 'uint256',
408
+ name: 'value',
409
+ type: 'uint256',
410
+ },
411
+ ],
412
+ name: 'approve',
413
+ outputs: [
414
+ {
415
+ internalType: 'bool',
416
+ name: '',
417
+ type: 'bool',
418
+ },
419
+ ],
420
+ stateMutability: 'nonpayable',
421
+ type: 'function',
422
+ },
423
+ {
424
+ inputs: [],
425
+ name: 'asset',
426
+ outputs: [
427
+ {
428
+ internalType: 'address',
429
+ name: '',
430
+ type: 'address',
431
+ },
432
+ ],
433
+ stateMutability: 'view',
434
+ type: 'function',
435
+ },
436
+ {
437
+ inputs: [
438
+ {
439
+ internalType: 'address',
440
+ name: 'account',
441
+ type: 'address',
442
+ },
443
+ ],
444
+ name: 'balanceOf',
445
+ outputs: [
446
+ {
447
+ internalType: 'uint256',
448
+ name: '',
449
+ type: 'uint256',
450
+ },
451
+ ],
452
+ stateMutability: 'view',
453
+ type: 'function',
454
+ },
455
+ {
456
+ inputs: [
457
+ {
458
+ internalType: 'uint256',
459
+ name: 'shares',
460
+ type: 'uint256',
461
+ },
462
+ ],
463
+ name: 'convertToAssets',
464
+ outputs: [
465
+ {
466
+ internalType: 'uint256',
467
+ name: '',
468
+ type: 'uint256',
469
+ },
470
+ ],
471
+ stateMutability: 'view',
472
+ type: 'function',
473
+ },
474
+ {
475
+ inputs: [
476
+ {
477
+ internalType: 'uint256',
478
+ name: 'assets',
479
+ type: 'uint256',
480
+ },
481
+ ],
482
+ name: 'convertToShares',
483
+ outputs: [
484
+ {
485
+ internalType: 'uint256',
486
+ name: '',
487
+ type: 'uint256',
488
+ },
489
+ ],
490
+ stateMutability: 'view',
491
+ type: 'function',
492
+ },
493
+ {
494
+ inputs: [],
495
+ name: 'decimals',
496
+ outputs: [
497
+ {
498
+ internalType: 'uint8',
499
+ name: '',
500
+ type: 'uint8',
501
+ },
502
+ ],
503
+ stateMutability: 'view',
504
+ type: 'function',
505
+ },
506
+ {
507
+ inputs: [
508
+ {
509
+ internalType: 'uint256',
510
+ name: 'assets',
511
+ type: 'uint256',
512
+ },
513
+ {
514
+ internalType: 'address',
515
+ name: 'receiver',
516
+ type: 'address',
517
+ },
518
+ ],
519
+ name: 'deposit',
520
+ outputs: [
521
+ {
522
+ internalType: 'uint256',
523
+ name: '',
524
+ type: 'uint256',
525
+ },
526
+ ],
527
+ stateMutability: 'nonpayable',
528
+ type: 'function',
529
+ },
530
+ {
531
+ inputs: [],
532
+ name: 'info',
533
+ outputs: [
534
+ {
535
+ components: [
536
+ {
537
+ internalType: 'uint192',
538
+ name: 'saved',
539
+ type: 'uint192',
540
+ },
541
+ {
542
+ internalType: 'uint64',
543
+ name: 'ticks',
544
+ type: 'uint64',
545
+ },
546
+ ],
547
+ internalType: 'struct ISavingsJUSD.Account',
548
+ name: '',
549
+ type: 'tuple',
550
+ },
551
+ ],
552
+ stateMutability: 'view',
553
+ type: 'function',
554
+ },
555
+ {
556
+ inputs: [
557
+ {
558
+ internalType: 'address',
559
+ name: '',
560
+ type: 'address',
561
+ },
562
+ ],
563
+ name: 'maxDeposit',
564
+ outputs: [
565
+ {
566
+ internalType: 'uint256',
567
+ name: '',
568
+ type: 'uint256',
569
+ },
570
+ ],
571
+ stateMutability: 'view',
572
+ type: 'function',
573
+ },
574
+ {
575
+ inputs: [
576
+ {
577
+ internalType: 'address',
578
+ name: '',
579
+ type: 'address',
580
+ },
581
+ ],
582
+ name: 'maxMint',
583
+ outputs: [
584
+ {
585
+ internalType: 'uint256',
586
+ name: '',
587
+ type: 'uint256',
588
+ },
589
+ ],
590
+ stateMutability: 'view',
591
+ type: 'function',
592
+ },
593
+ {
594
+ inputs: [
595
+ {
596
+ internalType: 'address',
597
+ name: 'owner',
598
+ type: 'address',
599
+ },
600
+ ],
601
+ name: 'maxRedeem',
602
+ outputs: [
603
+ {
604
+ internalType: 'uint256',
605
+ name: '',
606
+ type: 'uint256',
607
+ },
608
+ ],
609
+ stateMutability: 'view',
610
+ type: 'function',
611
+ },
612
+ {
613
+ inputs: [
614
+ {
615
+ internalType: 'address',
616
+ name: 'owner',
617
+ type: 'address',
618
+ },
619
+ ],
620
+ name: 'maxWithdraw',
621
+ outputs: [
622
+ {
623
+ internalType: 'uint256',
624
+ name: '',
625
+ type: 'uint256',
626
+ },
627
+ ],
628
+ stateMutability: 'view',
629
+ type: 'function',
630
+ },
631
+ {
632
+ inputs: [
633
+ {
634
+ internalType: 'uint256',
635
+ name: 'shares',
636
+ type: 'uint256',
637
+ },
638
+ {
639
+ internalType: 'address',
640
+ name: 'receiver',
641
+ type: 'address',
642
+ },
643
+ ],
644
+ name: 'mint',
645
+ outputs: [
646
+ {
647
+ internalType: 'uint256',
648
+ name: '',
649
+ type: 'uint256',
650
+ },
651
+ ],
652
+ stateMutability: 'nonpayable',
653
+ type: 'function',
654
+ },
655
+ {
656
+ inputs: [],
657
+ name: 'name',
658
+ outputs: [
659
+ {
660
+ internalType: 'string',
661
+ name: '',
662
+ type: 'string',
663
+ },
664
+ ],
665
+ stateMutability: 'view',
666
+ type: 'function',
667
+ },
668
+ {
669
+ inputs: [
670
+ {
671
+ internalType: 'uint256',
672
+ name: 'assets',
673
+ type: 'uint256',
674
+ },
675
+ ],
676
+ name: 'previewDeposit',
677
+ outputs: [
678
+ {
679
+ internalType: 'uint256',
680
+ name: '',
681
+ type: 'uint256',
682
+ },
683
+ ],
684
+ stateMutability: 'view',
685
+ type: 'function',
686
+ },
687
+ {
688
+ inputs: [
689
+ {
690
+ internalType: 'uint256',
691
+ name: 'shares',
692
+ type: 'uint256',
693
+ },
694
+ ],
695
+ name: 'previewMint',
696
+ outputs: [
697
+ {
698
+ internalType: 'uint256',
699
+ name: '',
700
+ type: 'uint256',
701
+ },
702
+ ],
703
+ stateMutability: 'view',
704
+ type: 'function',
705
+ },
706
+ {
707
+ inputs: [
708
+ {
709
+ internalType: 'uint256',
710
+ name: 'shares',
711
+ type: 'uint256',
712
+ },
713
+ ],
714
+ name: 'previewRedeem',
715
+ outputs: [
716
+ {
717
+ internalType: 'uint256',
718
+ name: '',
719
+ type: 'uint256',
720
+ },
721
+ ],
722
+ stateMutability: 'view',
723
+ type: 'function',
724
+ },
725
+ {
726
+ inputs: [
727
+ {
728
+ internalType: 'uint256',
729
+ name: 'assets',
730
+ type: 'uint256',
731
+ },
732
+ ],
733
+ name: 'previewWithdraw',
734
+ outputs: [
735
+ {
736
+ internalType: 'uint256',
737
+ name: '',
738
+ type: 'uint256',
739
+ },
740
+ ],
741
+ stateMutability: 'view',
742
+ type: 'function',
743
+ },
744
+ {
745
+ inputs: [],
746
+ name: 'price',
747
+ outputs: [
748
+ {
749
+ internalType: 'uint256',
750
+ name: '',
751
+ type: 'uint256',
752
+ },
753
+ ],
754
+ stateMutability: 'view',
755
+ type: 'function',
756
+ },
757
+ {
758
+ inputs: [
759
+ {
760
+ internalType: 'uint256',
761
+ name: 'shares',
762
+ type: 'uint256',
763
+ },
764
+ {
765
+ internalType: 'address',
766
+ name: 'receiver',
767
+ type: 'address',
768
+ },
769
+ {
770
+ internalType: 'address',
771
+ name: 'owner',
772
+ type: 'address',
773
+ },
774
+ ],
775
+ name: 'redeem',
776
+ outputs: [
777
+ {
778
+ internalType: 'uint256',
779
+ name: '',
780
+ type: 'uint256',
781
+ },
782
+ ],
783
+ stateMutability: 'nonpayable',
784
+ type: 'function',
785
+ },
786
+ {
787
+ inputs: [],
788
+ name: 'symbol',
789
+ outputs: [
790
+ {
791
+ internalType: 'string',
792
+ name: '',
793
+ type: 'string',
794
+ },
795
+ ],
796
+ stateMutability: 'view',
797
+ type: 'function',
798
+ },
799
+ {
800
+ inputs: [],
801
+ name: 'totalAssets',
802
+ outputs: [
803
+ {
804
+ internalType: 'uint256',
805
+ name: '',
806
+ type: 'uint256',
807
+ },
808
+ ],
809
+ stateMutability: 'view',
810
+ type: 'function',
811
+ },
812
+ {
813
+ inputs: [],
814
+ name: 'totalClaimed',
815
+ outputs: [
816
+ {
817
+ internalType: 'uint256',
818
+ name: '',
819
+ type: 'uint256',
820
+ },
821
+ ],
822
+ stateMutability: 'view',
823
+ type: 'function',
824
+ },
825
+ {
826
+ inputs: [],
827
+ name: 'totalSupply',
828
+ outputs: [
829
+ {
830
+ internalType: 'uint256',
831
+ name: '',
832
+ type: 'uint256',
833
+ },
834
+ ],
835
+ stateMutability: 'view',
836
+ type: 'function',
837
+ },
838
+ {
839
+ inputs: [
840
+ {
841
+ internalType: 'address',
842
+ name: 'to',
843
+ type: 'address',
844
+ },
845
+ {
846
+ internalType: 'uint256',
847
+ name: 'value',
848
+ type: 'uint256',
849
+ },
850
+ ],
851
+ name: 'transfer',
852
+ outputs: [
853
+ {
854
+ internalType: 'bool',
855
+ name: '',
856
+ type: 'bool',
857
+ },
858
+ ],
859
+ stateMutability: 'nonpayable',
860
+ type: 'function',
861
+ },
862
+ {
863
+ inputs: [
864
+ {
865
+ internalType: 'address',
866
+ name: 'from',
867
+ type: 'address',
868
+ },
869
+ {
870
+ internalType: 'address',
871
+ name: 'to',
872
+ type: 'address',
873
+ },
874
+ {
875
+ internalType: 'uint256',
876
+ name: 'value',
877
+ type: 'uint256',
878
+ },
879
+ ],
880
+ name: 'transferFrom',
881
+ outputs: [
882
+ {
883
+ internalType: 'bool',
884
+ name: '',
885
+ type: 'bool',
886
+ },
887
+ ],
888
+ stateMutability: 'nonpayable',
889
+ type: 'function',
890
+ },
891
+ {
892
+ inputs: [
893
+ {
894
+ internalType: 'uint256',
895
+ name: 'assets',
896
+ type: 'uint256',
897
+ },
898
+ {
899
+ internalType: 'address',
900
+ name: 'receiver',
901
+ type: 'address',
902
+ },
903
+ {
904
+ internalType: 'address',
905
+ name: 'owner',
906
+ type: 'address',
907
+ },
908
+ ],
909
+ name: 'withdraw',
910
+ outputs: [
911
+ {
912
+ internalType: 'uint256',
913
+ name: '',
914
+ type: 'uint256',
915
+ },
916
+ ],
917
+ stateMutability: 'nonpayable',
918
+ type: 'function',
919
+ },
920
+ ] as const;