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