@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,906 @@
1
+ export const FrontendGatewayABI = [
2
+ {
3
+ inputs: [
4
+ {
5
+ internalType: 'address',
6
+ name: 'jusd_',
7
+ type: 'address',
8
+ },
9
+ ],
10
+ stateMutability: 'nonpayable',
11
+ type: 'constructor',
12
+ },
13
+ {
14
+ inputs: [],
15
+ name: 'EquityTooLow',
16
+ type: 'error',
17
+ },
18
+ {
19
+ inputs: [],
20
+ name: 'FrontendCodeAlreadyExists',
21
+ type: 'error',
22
+ },
23
+ {
24
+ inputs: [],
25
+ name: 'NoOpenChanges',
26
+ type: 'error',
27
+ },
28
+ {
29
+ inputs: [
30
+ {
31
+ internalType: 'uint256',
32
+ name: 'minmumExecutionTime',
33
+ type: 'uint256',
34
+ },
35
+ ],
36
+ name: 'NotDoneWaiting',
37
+ type: 'error',
38
+ },
39
+ {
40
+ inputs: [],
41
+ name: 'NotFrontendCodeOwner',
42
+ type: 'error',
43
+ },
44
+ {
45
+ inputs: [],
46
+ name: 'NotGatewayService',
47
+ type: 'error',
48
+ },
49
+ {
50
+ inputs: [
51
+ {
52
+ internalType: 'address',
53
+ name: 'owner',
54
+ type: 'address',
55
+ },
56
+ ],
57
+ name: 'OwnableInvalidOwner',
58
+ type: 'error',
59
+ },
60
+ {
61
+ inputs: [
62
+ {
63
+ internalType: 'address',
64
+ name: 'account',
65
+ type: 'address',
66
+ },
67
+ ],
68
+ name: 'OwnableUnauthorizedAccount',
69
+ type: 'error',
70
+ },
71
+ {
72
+ inputs: [],
73
+ name: 'ProposedChangesToHigh',
74
+ type: 'error',
75
+ },
76
+ {
77
+ anonymous: false,
78
+ inputs: [
79
+ {
80
+ indexed: false,
81
+ internalType: 'address',
82
+ name: 'owner',
83
+ type: 'address',
84
+ },
85
+ {
86
+ indexed: false,
87
+ internalType: 'bytes32',
88
+ name: 'frontendCode',
89
+ type: 'bytes32',
90
+ },
91
+ ],
92
+ name: 'FrontendCodeRegistered',
93
+ type: 'event',
94
+ },
95
+ {
96
+ anonymous: false,
97
+ inputs: [
98
+ {
99
+ indexed: false,
100
+ internalType: 'address',
101
+ name: 'to',
102
+ type: 'address',
103
+ },
104
+ {
105
+ indexed: false,
106
+ internalType: 'uint256',
107
+ name: 'amount',
108
+ type: 'uint256',
109
+ },
110
+ {
111
+ indexed: false,
112
+ internalType: 'bytes32',
113
+ name: 'frontendCode',
114
+ type: 'bytes32',
115
+ },
116
+ ],
117
+ name: 'FrontendCodeRewardsWithdrawn',
118
+ type: 'event',
119
+ },
120
+ {
121
+ anonymous: false,
122
+ inputs: [
123
+ {
124
+ indexed: false,
125
+ internalType: 'address',
126
+ name: 'from',
127
+ type: 'address',
128
+ },
129
+ {
130
+ indexed: false,
131
+ internalType: 'address',
132
+ name: 'to',
133
+ type: 'address',
134
+ },
135
+ {
136
+ indexed: false,
137
+ internalType: 'bytes32',
138
+ name: 'frontendCode',
139
+ type: 'bytes32',
140
+ },
141
+ ],
142
+ name: 'FrontendCodeTransferred',
143
+ type: 'event',
144
+ },
145
+ {
146
+ anonymous: false,
147
+ inputs: [
148
+ {
149
+ indexed: false,
150
+ internalType: 'bytes32',
151
+ name: 'frontendCode',
152
+ type: 'bytes32',
153
+ },
154
+ {
155
+ indexed: false,
156
+ internalType: 'address',
157
+ name: 'user',
158
+ type: 'address',
159
+ },
160
+ {
161
+ indexed: false,
162
+ internalType: 'uint256',
163
+ name: 'amount',
164
+ type: 'uint256',
165
+ },
166
+ {
167
+ indexed: false,
168
+ internalType: 'uint256',
169
+ name: 'reward',
170
+ type: 'uint256',
171
+ },
172
+ ],
173
+ name: 'InvestRewardAdded',
174
+ type: 'event',
175
+ },
176
+ {
177
+ anonymous: false,
178
+ inputs: [
179
+ {
180
+ indexed: false,
181
+ internalType: 'address',
182
+ name: 'position',
183
+ type: 'address',
184
+ },
185
+ {
186
+ indexed: false,
187
+ internalType: 'bytes32',
188
+ name: 'frontendCode',
189
+ type: 'bytes32',
190
+ },
191
+ ],
192
+ name: 'NewPositionRegistered',
193
+ type: 'event',
194
+ },
195
+ {
196
+ anonymous: false,
197
+ inputs: [
198
+ {
199
+ indexed: true,
200
+ internalType: 'address',
201
+ name: 'previousOwner',
202
+ type: 'address',
203
+ },
204
+ {
205
+ indexed: true,
206
+ internalType: 'address',
207
+ name: 'newOwner',
208
+ type: 'address',
209
+ },
210
+ ],
211
+ name: 'OwnershipTransferred',
212
+ type: 'event',
213
+ },
214
+ {
215
+ anonymous: false,
216
+ inputs: [
217
+ {
218
+ indexed: false,
219
+ internalType: 'bytes32',
220
+ name: 'frontendCode',
221
+ type: 'bytes32',
222
+ },
223
+ {
224
+ indexed: false,
225
+ internalType: 'address',
226
+ name: 'position',
227
+ type: 'address',
228
+ },
229
+ {
230
+ indexed: false,
231
+ internalType: 'uint256',
232
+ name: 'amount',
233
+ type: 'uint256',
234
+ },
235
+ {
236
+ indexed: false,
237
+ internalType: 'uint256',
238
+ name: 'reward',
239
+ type: 'uint256',
240
+ },
241
+ ],
242
+ name: 'PositionRewardAdded',
243
+ type: 'event',
244
+ },
245
+ {
246
+ anonymous: false,
247
+ inputs: [
248
+ {
249
+ indexed: false,
250
+ internalType: 'address',
251
+ name: 'who',
252
+ type: 'address',
253
+ },
254
+ {
255
+ indexed: false,
256
+ internalType: 'uint24',
257
+ name: 'nextFeeRate',
258
+ type: 'uint24',
259
+ },
260
+ {
261
+ indexed: false,
262
+ internalType: 'uint24',
263
+ name: 'nextSavingsFeeRate',
264
+ type: 'uint24',
265
+ },
266
+ {
267
+ indexed: false,
268
+ internalType: 'uint24',
269
+ name: 'nextMintingFeeRate',
270
+ type: 'uint24',
271
+ },
272
+ ],
273
+ name: 'RateChangesExecuted',
274
+ type: 'event',
275
+ },
276
+ {
277
+ anonymous: false,
278
+ inputs: [
279
+ {
280
+ indexed: false,
281
+ internalType: 'address',
282
+ name: 'who',
283
+ type: 'address',
284
+ },
285
+ {
286
+ indexed: false,
287
+ internalType: 'uint24',
288
+ name: 'nextFeeRate',
289
+ type: 'uint24',
290
+ },
291
+ {
292
+ indexed: false,
293
+ internalType: 'uint24',
294
+ name: 'nextSavingsFeeRate',
295
+ type: 'uint24',
296
+ },
297
+ {
298
+ indexed: false,
299
+ internalType: 'uint24',
300
+ name: 'nextMintingFeeRate',
301
+ type: 'uint24',
302
+ },
303
+ {
304
+ indexed: false,
305
+ internalType: 'uint256',
306
+ name: 'nextChange',
307
+ type: 'uint256',
308
+ },
309
+ ],
310
+ name: 'RateChangesProposed',
311
+ type: 'event',
312
+ },
313
+ {
314
+ anonymous: false,
315
+ inputs: [
316
+ {
317
+ indexed: false,
318
+ internalType: 'bytes32',
319
+ name: 'frontendCode',
320
+ type: 'bytes32',
321
+ },
322
+ {
323
+ indexed: false,
324
+ internalType: 'address',
325
+ name: 'user',
326
+ type: 'address',
327
+ },
328
+ {
329
+ indexed: false,
330
+ internalType: 'uint256',
331
+ name: 'amount',
332
+ type: 'uint256',
333
+ },
334
+ {
335
+ indexed: false,
336
+ internalType: 'uint256',
337
+ name: 'reward',
338
+ type: 'uint256',
339
+ },
340
+ ],
341
+ name: 'RedeemRewardAdded',
342
+ type: 'event',
343
+ },
344
+ {
345
+ anonymous: false,
346
+ inputs: [
347
+ {
348
+ indexed: false,
349
+ internalType: 'bytes32',
350
+ name: 'frontendCode',
351
+ type: 'bytes32',
352
+ },
353
+ {
354
+ indexed: false,
355
+ internalType: 'address',
356
+ name: 'saver',
357
+ type: 'address',
358
+ },
359
+ {
360
+ indexed: false,
361
+ internalType: 'uint256',
362
+ name: 'interest',
363
+ type: 'uint256',
364
+ },
365
+ {
366
+ indexed: false,
367
+ internalType: 'uint256',
368
+ name: 'reward',
369
+ type: 'uint256',
370
+ },
371
+ ],
372
+ name: 'SavingsRewardAdded',
373
+ type: 'event',
374
+ },
375
+ {
376
+ inputs: [],
377
+ name: 'EQUITY',
378
+ outputs: [
379
+ {
380
+ internalType: 'contract Equity',
381
+ name: '',
382
+ type: 'address',
383
+ },
384
+ ],
385
+ stateMutability: 'view',
386
+ type: 'function',
387
+ },
388
+ {
389
+ inputs: [],
390
+ name: 'JUSD',
391
+ outputs: [
392
+ {
393
+ internalType: 'contract IERC20',
394
+ name: '',
395
+ type: 'address',
396
+ },
397
+ ],
398
+ stateMutability: 'view',
399
+ type: 'function',
400
+ },
401
+ {
402
+ inputs: [],
403
+ name: 'MINTING_HUB',
404
+ outputs: [
405
+ {
406
+ internalType: 'contract IMintingHubGateway',
407
+ name: '',
408
+ type: 'address',
409
+ },
410
+ ],
411
+ stateMutability: 'view',
412
+ type: 'function',
413
+ },
414
+ {
415
+ inputs: [],
416
+ name: 'SAVINGS',
417
+ outputs: [
418
+ {
419
+ internalType: 'contract SavingsGateway',
420
+ name: '',
421
+ type: 'address',
422
+ },
423
+ ],
424
+ stateMutability: 'view',
425
+ type: 'function',
426
+ },
427
+ {
428
+ inputs: [],
429
+ name: 'changeTimeLock',
430
+ outputs: [
431
+ {
432
+ internalType: 'uint256',
433
+ name: '',
434
+ type: 'uint256',
435
+ },
436
+ ],
437
+ stateMutability: 'view',
438
+ type: 'function',
439
+ },
440
+ {
441
+ inputs: [],
442
+ name: 'executeChanges',
443
+ outputs: [],
444
+ stateMutability: 'nonpayable',
445
+ type: 'function',
446
+ },
447
+ {
448
+ inputs: [],
449
+ name: 'feeRate',
450
+ outputs: [
451
+ {
452
+ internalType: 'uint24',
453
+ name: '',
454
+ type: 'uint24',
455
+ },
456
+ ],
457
+ stateMutability: 'view',
458
+ type: 'function',
459
+ },
460
+ {
461
+ inputs: [
462
+ {
463
+ internalType: 'bytes32',
464
+ name: '',
465
+ type: 'bytes32',
466
+ },
467
+ ],
468
+ name: 'frontendCodes',
469
+ outputs: [
470
+ {
471
+ internalType: 'uint256',
472
+ name: 'balance',
473
+ type: 'uint256',
474
+ },
475
+ {
476
+ internalType: 'address',
477
+ name: 'owner',
478
+ type: 'address',
479
+ },
480
+ ],
481
+ stateMutability: 'view',
482
+ type: 'function',
483
+ },
484
+ {
485
+ inputs: [
486
+ {
487
+ internalType: 'address',
488
+ name: 'position',
489
+ type: 'address',
490
+ },
491
+ ],
492
+ name: 'getPositionFrontendCode',
493
+ outputs: [
494
+ {
495
+ internalType: 'bytes32',
496
+ name: '',
497
+ type: 'bytes32',
498
+ },
499
+ ],
500
+ stateMutability: 'view',
501
+ type: 'function',
502
+ },
503
+ {
504
+ inputs: [
505
+ {
506
+ internalType: 'address',
507
+ name: 'savings',
508
+ type: 'address',
509
+ },
510
+ {
511
+ internalType: 'address',
512
+ name: 'mintingHub',
513
+ type: 'address',
514
+ },
515
+ ],
516
+ name: 'init',
517
+ outputs: [],
518
+ stateMutability: 'nonpayable',
519
+ type: 'function',
520
+ },
521
+ {
522
+ inputs: [
523
+ {
524
+ internalType: 'uint256',
525
+ name: 'amount',
526
+ type: 'uint256',
527
+ },
528
+ {
529
+ internalType: 'uint256',
530
+ name: 'expectedShares',
531
+ type: 'uint256',
532
+ },
533
+ {
534
+ internalType: 'bytes32',
535
+ name: 'frontendCode',
536
+ type: 'bytes32',
537
+ },
538
+ ],
539
+ name: 'invest',
540
+ outputs: [
541
+ {
542
+ internalType: 'uint256',
543
+ name: '',
544
+ type: 'uint256',
545
+ },
546
+ ],
547
+ stateMutability: 'nonpayable',
548
+ type: 'function',
549
+ },
550
+ {
551
+ inputs: [
552
+ {
553
+ internalType: 'address',
554
+ name: '',
555
+ type: 'address',
556
+ },
557
+ ],
558
+ name: 'lastUsedFrontendCode',
559
+ outputs: [
560
+ {
561
+ internalType: 'bytes32',
562
+ name: '',
563
+ type: 'bytes32',
564
+ },
565
+ ],
566
+ stateMutability: 'view',
567
+ type: 'function',
568
+ },
569
+ {
570
+ inputs: [],
571
+ name: 'mintingFeeRate',
572
+ outputs: [
573
+ {
574
+ internalType: 'uint24',
575
+ name: '',
576
+ type: 'uint24',
577
+ },
578
+ ],
579
+ stateMutability: 'view',
580
+ type: 'function',
581
+ },
582
+ {
583
+ inputs: [],
584
+ name: 'nextFeeRate',
585
+ outputs: [
586
+ {
587
+ internalType: 'uint24',
588
+ name: '',
589
+ type: 'uint24',
590
+ },
591
+ ],
592
+ stateMutability: 'view',
593
+ type: 'function',
594
+ },
595
+ {
596
+ inputs: [],
597
+ name: 'nextMintingFeeRate',
598
+ outputs: [
599
+ {
600
+ internalType: 'uint24',
601
+ name: '',
602
+ type: 'uint24',
603
+ },
604
+ ],
605
+ stateMutability: 'view',
606
+ type: 'function',
607
+ },
608
+ {
609
+ inputs: [],
610
+ name: 'nextSavingsFeeRate',
611
+ outputs: [
612
+ {
613
+ internalType: 'uint24',
614
+ name: '',
615
+ type: 'uint24',
616
+ },
617
+ ],
618
+ stateMutability: 'view',
619
+ type: 'function',
620
+ },
621
+ {
622
+ inputs: [],
623
+ name: 'owner',
624
+ outputs: [
625
+ {
626
+ internalType: 'address',
627
+ name: '',
628
+ type: 'address',
629
+ },
630
+ ],
631
+ stateMutability: 'view',
632
+ type: 'function',
633
+ },
634
+ {
635
+ inputs: [
636
+ {
637
+ internalType: 'uint24',
638
+ name: 'newFeeRatePPM_',
639
+ type: 'uint24',
640
+ },
641
+ {
642
+ internalType: 'uint24',
643
+ name: 'newSavingsFeeRatePPM_',
644
+ type: 'uint24',
645
+ },
646
+ {
647
+ internalType: 'uint24',
648
+ name: 'newMintingFeeRatePPM_',
649
+ type: 'uint24',
650
+ },
651
+ {
652
+ internalType: 'address[]',
653
+ name: 'helpers',
654
+ type: 'address[]',
655
+ },
656
+ ],
657
+ name: 'proposeChanges',
658
+ outputs: [],
659
+ stateMutability: 'nonpayable',
660
+ type: 'function',
661
+ },
662
+ {
663
+ inputs: [
664
+ {
665
+ internalType: 'address',
666
+ name: 'target',
667
+ type: 'address',
668
+ },
669
+ {
670
+ internalType: 'uint256',
671
+ name: 'shares',
672
+ type: 'uint256',
673
+ },
674
+ {
675
+ internalType: 'uint256',
676
+ name: 'expectedProceeds',
677
+ type: 'uint256',
678
+ },
679
+ {
680
+ internalType: 'bytes32',
681
+ name: 'frontendCode',
682
+ type: 'bytes32',
683
+ },
684
+ ],
685
+ name: 'redeem',
686
+ outputs: [
687
+ {
688
+ internalType: 'uint256',
689
+ name: '',
690
+ type: 'uint256',
691
+ },
692
+ ],
693
+ stateMutability: 'nonpayable',
694
+ type: 'function',
695
+ },
696
+ {
697
+ inputs: [
698
+ {
699
+ internalType: 'address',
700
+ name: '',
701
+ type: 'address',
702
+ },
703
+ ],
704
+ name: 'referredPositions',
705
+ outputs: [
706
+ {
707
+ internalType: 'bytes32',
708
+ name: '',
709
+ type: 'bytes32',
710
+ },
711
+ ],
712
+ stateMutability: 'view',
713
+ type: 'function',
714
+ },
715
+ {
716
+ inputs: [
717
+ {
718
+ internalType: 'bytes32',
719
+ name: 'frontendCode',
720
+ type: 'bytes32',
721
+ },
722
+ ],
723
+ name: 'registerFrontendCode',
724
+ outputs: [
725
+ {
726
+ internalType: 'bool',
727
+ name: '',
728
+ type: 'bool',
729
+ },
730
+ ],
731
+ stateMutability: 'nonpayable',
732
+ type: 'function',
733
+ },
734
+ {
735
+ inputs: [
736
+ {
737
+ internalType: 'address',
738
+ name: 'position',
739
+ type: 'address',
740
+ },
741
+ {
742
+ internalType: 'bytes32',
743
+ name: 'frontendCode',
744
+ type: 'bytes32',
745
+ },
746
+ ],
747
+ name: 'registerPosition',
748
+ outputs: [],
749
+ stateMutability: 'nonpayable',
750
+ type: 'function',
751
+ },
752
+ {
753
+ inputs: [],
754
+ name: 'renounceOwnership',
755
+ outputs: [],
756
+ stateMutability: 'nonpayable',
757
+ type: 'function',
758
+ },
759
+ {
760
+ inputs: [],
761
+ name: 'savingsFeeRate',
762
+ outputs: [
763
+ {
764
+ internalType: 'uint24',
765
+ name: '',
766
+ type: 'uint24',
767
+ },
768
+ ],
769
+ stateMutability: 'view',
770
+ type: 'function',
771
+ },
772
+ {
773
+ inputs: [
774
+ {
775
+ internalType: 'bytes32',
776
+ name: 'frontendCode',
777
+ type: 'bytes32',
778
+ },
779
+ {
780
+ internalType: 'address',
781
+ name: 'to',
782
+ type: 'address',
783
+ },
784
+ ],
785
+ name: 'transferFrontendCode',
786
+ outputs: [
787
+ {
788
+ internalType: 'bool',
789
+ name: '',
790
+ type: 'bool',
791
+ },
792
+ ],
793
+ stateMutability: 'nonpayable',
794
+ type: 'function',
795
+ },
796
+ {
797
+ inputs: [
798
+ {
799
+ internalType: 'address',
800
+ name: 'newOwner',
801
+ type: 'address',
802
+ },
803
+ ],
804
+ name: 'transferOwnership',
805
+ outputs: [],
806
+ stateMutability: 'nonpayable',
807
+ type: 'function',
808
+ },
809
+ {
810
+ inputs: [
811
+ {
812
+ internalType: 'address',
813
+ name: 'position',
814
+ type: 'address',
815
+ },
816
+ {
817
+ internalType: 'uint256',
818
+ name: 'amount',
819
+ type: 'uint256',
820
+ },
821
+ ],
822
+ name: 'updatePositionRewards',
823
+ outputs: [],
824
+ stateMutability: 'nonpayable',
825
+ type: 'function',
826
+ },
827
+ {
828
+ inputs: [
829
+ {
830
+ internalType: 'address',
831
+ name: 'savingsOwner',
832
+ type: 'address',
833
+ },
834
+ {
835
+ internalType: 'bytes32',
836
+ name: 'frontendCode',
837
+ type: 'bytes32',
838
+ },
839
+ ],
840
+ name: 'updateSavingCode',
841
+ outputs: [],
842
+ stateMutability: 'nonpayable',
843
+ type: 'function',
844
+ },
845
+ {
846
+ inputs: [
847
+ {
848
+ internalType: 'address',
849
+ name: 'saver',
850
+ type: 'address',
851
+ },
852
+ {
853
+ internalType: 'uint256',
854
+ name: 'interest',
855
+ type: 'uint256',
856
+ },
857
+ ],
858
+ name: 'updateSavingRewards',
859
+ outputs: [],
860
+ stateMutability: 'nonpayable',
861
+ type: 'function',
862
+ },
863
+ {
864
+ inputs: [
865
+ {
866
+ internalType: 'bytes32',
867
+ name: 'frontendCode',
868
+ type: 'bytes32',
869
+ },
870
+ ],
871
+ name: 'withdrawRewards',
872
+ outputs: [
873
+ {
874
+ internalType: 'uint256',
875
+ name: '',
876
+ type: 'uint256',
877
+ },
878
+ ],
879
+ stateMutability: 'nonpayable',
880
+ type: 'function',
881
+ },
882
+ {
883
+ inputs: [
884
+ {
885
+ internalType: 'bytes32',
886
+ name: 'frontendCode',
887
+ type: 'bytes32',
888
+ },
889
+ {
890
+ internalType: 'address',
891
+ name: 'to',
892
+ type: 'address',
893
+ },
894
+ ],
895
+ name: 'withdrawRewardsTo',
896
+ outputs: [
897
+ {
898
+ internalType: 'uint256',
899
+ name: '',
900
+ type: 'uint256',
901
+ },
902
+ ],
903
+ stateMutability: 'nonpayable',
904
+ type: 'function',
905
+ },
906
+ ] as const;