polarloop 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.
@@ -0,0 +1,972 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ {
5
+ "internalType": "uint32",
6
+ "name": "_minInterval",
7
+ "type": "uint32"
8
+ }
9
+ ],
10
+ "stateMutability": "nonpayable",
11
+ "type": "constructor"
12
+ },
13
+ {
14
+ "inputs": [],
15
+ "name": "AccessControlBadConfirmation",
16
+ "type": "error"
17
+ },
18
+ {
19
+ "inputs": [
20
+ {
21
+ "internalType": "address",
22
+ "name": "account",
23
+ "type": "address"
24
+ },
25
+ {
26
+ "internalType": "bytes32",
27
+ "name": "neededRole",
28
+ "type": "bytes32"
29
+ }
30
+ ],
31
+ "name": "AccessControlUnauthorizedAccount",
32
+ "type": "error"
33
+ },
34
+ {
35
+ "inputs": [],
36
+ "name": "ECDSAInvalidSignature",
37
+ "type": "error"
38
+ },
39
+ {
40
+ "inputs": [
41
+ {
42
+ "internalType": "uint256",
43
+ "name": "length",
44
+ "type": "uint256"
45
+ }
46
+ ],
47
+ "name": "ECDSAInvalidSignatureLength",
48
+ "type": "error"
49
+ },
50
+ {
51
+ "inputs": [
52
+ {
53
+ "internalType": "bytes32",
54
+ "name": "s",
55
+ "type": "bytes32"
56
+ }
57
+ ],
58
+ "name": "ECDSAInvalidSignatureS",
59
+ "type": "error"
60
+ },
61
+ {
62
+ "inputs": [],
63
+ "name": "EnforcedPause",
64
+ "type": "error"
65
+ },
66
+ {
67
+ "inputs": [],
68
+ "name": "ExpectedPause",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [],
73
+ "name": "ReentrancyGuardReentrantCall",
74
+ "type": "error"
75
+ },
76
+ {
77
+ "inputs": [
78
+ {
79
+ "internalType": "address",
80
+ "name": "token",
81
+ "type": "address"
82
+ }
83
+ ],
84
+ "name": "SafeERC20FailedOperation",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "anonymous": false,
89
+ "inputs": [
90
+ {
91
+ "indexed": true,
92
+ "internalType": "address",
93
+ "name": "token",
94
+ "type": "address"
95
+ },
96
+ {
97
+ "indexed": true,
98
+ "internalType": "address",
99
+ "name": "to",
100
+ "type": "address"
101
+ },
102
+ {
103
+ "indexed": false,
104
+ "internalType": "uint256",
105
+ "name": "amount",
106
+ "type": "uint256"
107
+ }
108
+ ],
109
+ "name": "ERC20Rescued",
110
+ "type": "event"
111
+ },
112
+ {
113
+ "anonymous": false,
114
+ "inputs": [
115
+ {
116
+ "indexed": true,
117
+ "internalType": "address",
118
+ "name": "to",
119
+ "type": "address"
120
+ },
121
+ {
122
+ "indexed": false,
123
+ "internalType": "uint256",
124
+ "name": "amount",
125
+ "type": "uint256"
126
+ }
127
+ ],
128
+ "name": "ETHRescued",
129
+ "type": "event"
130
+ },
131
+ {
132
+ "anonymous": false,
133
+ "inputs": [
134
+ {
135
+ "indexed": true,
136
+ "internalType": "bytes32",
137
+ "name": "mandateId",
138
+ "type": "bytes32"
139
+ },
140
+ {
141
+ "indexed": true,
142
+ "internalType": "address",
143
+ "name": "payer",
144
+ "type": "address"
145
+ },
146
+ {
147
+ "indexed": true,
148
+ "internalType": "address",
149
+ "name": "merchant",
150
+ "type": "address"
151
+ },
152
+ {
153
+ "indexed": false,
154
+ "internalType": "uint128",
155
+ "name": "amount",
156
+ "type": "uint128"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "uint48",
161
+ "name": "timestamp",
162
+ "type": "uint48"
163
+ }
164
+ ],
165
+ "name": "MandateCharged",
166
+ "type": "event"
167
+ },
168
+ {
169
+ "anonymous": false,
170
+ "inputs": [
171
+ {
172
+ "indexed": true,
173
+ "internalType": "bytes32",
174
+ "name": "mandateId",
175
+ "type": "bytes32"
176
+ },
177
+ {
178
+ "indexed": true,
179
+ "internalType": "address",
180
+ "name": "payer",
181
+ "type": "address"
182
+ },
183
+ {
184
+ "indexed": true,
185
+ "internalType": "address",
186
+ "name": "merchant",
187
+ "type": "address"
188
+ },
189
+ {
190
+ "indexed": false,
191
+ "internalType": "address",
192
+ "name": "token",
193
+ "type": "address"
194
+ },
195
+ {
196
+ "indexed": false,
197
+ "internalType": "uint128",
198
+ "name": "amount",
199
+ "type": "uint128"
200
+ },
201
+ {
202
+ "indexed": false,
203
+ "internalType": "uint32",
204
+ "name": "interval",
205
+ "type": "uint32"
206
+ },
207
+ {
208
+ "indexed": false,
209
+ "internalType": "uint128",
210
+ "name": "maxTotalAmount",
211
+ "type": "uint128"
212
+ },
213
+ {
214
+ "indexed": false,
215
+ "internalType": "bytes32",
216
+ "name": "referenceId",
217
+ "type": "bytes32"
218
+ }
219
+ ],
220
+ "name": "MandateCreated",
221
+ "type": "event"
222
+ },
223
+ {
224
+ "anonymous": false,
225
+ "inputs": [
226
+ {
227
+ "indexed": true,
228
+ "internalType": "bytes32",
229
+ "name": "mandateId",
230
+ "type": "bytes32"
231
+ },
232
+ {
233
+ "indexed": true,
234
+ "internalType": "address",
235
+ "name": "payer",
236
+ "type": "address"
237
+ }
238
+ ],
239
+ "name": "MandateRevoked",
240
+ "type": "event"
241
+ },
242
+ {
243
+ "anonymous": false,
244
+ "inputs": [
245
+ {
246
+ "indexed": false,
247
+ "internalType": "address",
248
+ "name": "account",
249
+ "type": "address"
250
+ }
251
+ ],
252
+ "name": "Paused",
253
+ "type": "event"
254
+ },
255
+ {
256
+ "anonymous": false,
257
+ "inputs": [
258
+ {
259
+ "indexed": true,
260
+ "internalType": "bytes32",
261
+ "name": "role",
262
+ "type": "bytes32"
263
+ },
264
+ {
265
+ "indexed": true,
266
+ "internalType": "bytes32",
267
+ "name": "previousAdminRole",
268
+ "type": "bytes32"
269
+ },
270
+ {
271
+ "indexed": true,
272
+ "internalType": "bytes32",
273
+ "name": "newAdminRole",
274
+ "type": "bytes32"
275
+ }
276
+ ],
277
+ "name": "RoleAdminChanged",
278
+ "type": "event"
279
+ },
280
+ {
281
+ "anonymous": false,
282
+ "inputs": [
283
+ {
284
+ "indexed": true,
285
+ "internalType": "bytes32",
286
+ "name": "role",
287
+ "type": "bytes32"
288
+ },
289
+ {
290
+ "indexed": true,
291
+ "internalType": "address",
292
+ "name": "account",
293
+ "type": "address"
294
+ },
295
+ {
296
+ "indexed": true,
297
+ "internalType": "address",
298
+ "name": "sender",
299
+ "type": "address"
300
+ }
301
+ ],
302
+ "name": "RoleGranted",
303
+ "type": "event"
304
+ },
305
+ {
306
+ "anonymous": false,
307
+ "inputs": [
308
+ {
309
+ "indexed": true,
310
+ "internalType": "bytes32",
311
+ "name": "role",
312
+ "type": "bytes32"
313
+ },
314
+ {
315
+ "indexed": true,
316
+ "internalType": "address",
317
+ "name": "account",
318
+ "type": "address"
319
+ },
320
+ {
321
+ "indexed": true,
322
+ "internalType": "address",
323
+ "name": "sender",
324
+ "type": "address"
325
+ }
326
+ ],
327
+ "name": "RoleRevoked",
328
+ "type": "event"
329
+ },
330
+ {
331
+ "anonymous": false,
332
+ "inputs": [
333
+ {
334
+ "indexed": false,
335
+ "internalType": "address",
336
+ "name": "account",
337
+ "type": "address"
338
+ }
339
+ ],
340
+ "name": "Unpaused",
341
+ "type": "event"
342
+ },
343
+ {
344
+ "inputs": [],
345
+ "name": "DEFAULT_ADMIN_ROLE",
346
+ "outputs": [
347
+ {
348
+ "internalType": "bytes32",
349
+ "name": "",
350
+ "type": "bytes32"
351
+ }
352
+ ],
353
+ "stateMutability": "view",
354
+ "type": "function"
355
+ },
356
+ {
357
+ "inputs": [],
358
+ "name": "OPERATOR_ROLE",
359
+ "outputs": [
360
+ {
361
+ "internalType": "bytes32",
362
+ "name": "",
363
+ "type": "bytes32"
364
+ }
365
+ ],
366
+ "stateMutability": "view",
367
+ "type": "function"
368
+ },
369
+ {
370
+ "inputs": [
371
+ {
372
+ "internalType": "bytes32[]",
373
+ "name": "mandateIds",
374
+ "type": "bytes32[]"
375
+ }
376
+ ],
377
+ "name": "batchCharge",
378
+ "outputs": [
379
+ {
380
+ "components": [
381
+ {
382
+ "internalType": "bytes32",
383
+ "name": "mandateId",
384
+ "type": "bytes32"
385
+ },
386
+ {
387
+ "internalType": "bool",
388
+ "name": "success",
389
+ "type": "bool"
390
+ },
391
+ {
392
+ "internalType": "string",
393
+ "name": "reason",
394
+ "type": "string"
395
+ }
396
+ ],
397
+ "internalType": "struct PolarLoop.BatchResult[]",
398
+ "name": "results",
399
+ "type": "tuple[]"
400
+ }
401
+ ],
402
+ "stateMutability": "nonpayable",
403
+ "type": "function"
404
+ },
405
+ {
406
+ "inputs": [
407
+ {
408
+ "internalType": "bytes32[]",
409
+ "name": "mandateIds",
410
+ "type": "bytes32[]"
411
+ }
412
+ ],
413
+ "name": "batchIsChargeReady",
414
+ "outputs": [
415
+ {
416
+ "internalType": "bool[]",
417
+ "name": "ready",
418
+ "type": "bool[]"
419
+ },
420
+ {
421
+ "internalType": "string[]",
422
+ "name": "reasons",
423
+ "type": "string[]"
424
+ }
425
+ ],
426
+ "stateMutability": "view",
427
+ "type": "function"
428
+ },
429
+ {
430
+ "inputs": [
431
+ {
432
+ "internalType": "bytes32[]",
433
+ "name": "mandateIds",
434
+ "type": "bytes32[]"
435
+ }
436
+ ],
437
+ "name": "batchRevokeMandate",
438
+ "outputs": [
439
+ {
440
+ "components": [
441
+ {
442
+ "internalType": "bytes32",
443
+ "name": "mandateId",
444
+ "type": "bytes32"
445
+ },
446
+ {
447
+ "internalType": "bool",
448
+ "name": "success",
449
+ "type": "bool"
450
+ },
451
+ {
452
+ "internalType": "string",
453
+ "name": "reason",
454
+ "type": "string"
455
+ }
456
+ ],
457
+ "internalType": "struct PolarLoop.BatchResult[]",
458
+ "name": "results",
459
+ "type": "tuple[]"
460
+ }
461
+ ],
462
+ "stateMutability": "nonpayable",
463
+ "type": "function"
464
+ },
465
+ {
466
+ "inputs": [
467
+ {
468
+ "internalType": "bytes32",
469
+ "name": "mandateId",
470
+ "type": "bytes32"
471
+ }
472
+ ],
473
+ "name": "charge",
474
+ "outputs": [],
475
+ "stateMutability": "nonpayable",
476
+ "type": "function"
477
+ },
478
+ {
479
+ "inputs": [
480
+ {
481
+ "internalType": "address",
482
+ "name": "merchant",
483
+ "type": "address"
484
+ },
485
+ {
486
+ "internalType": "address",
487
+ "name": "token",
488
+ "type": "address"
489
+ },
490
+ {
491
+ "internalType": "uint128",
492
+ "name": "amount",
493
+ "type": "uint128"
494
+ },
495
+ {
496
+ "internalType": "uint32",
497
+ "name": "interval",
498
+ "type": "uint32"
499
+ },
500
+ {
501
+ "internalType": "uint128",
502
+ "name": "maxTotalAmount",
503
+ "type": "uint128"
504
+ },
505
+ {
506
+ "internalType": "bytes32",
507
+ "name": "referenceId",
508
+ "type": "bytes32"
509
+ },
510
+ {
511
+ "internalType": "bytes",
512
+ "name": "signature",
513
+ "type": "bytes"
514
+ }
515
+ ],
516
+ "name": "createMandate",
517
+ "outputs": [
518
+ {
519
+ "internalType": "bytes32",
520
+ "name": "mandateId",
521
+ "type": "bytes32"
522
+ }
523
+ ],
524
+ "stateMutability": "nonpayable",
525
+ "type": "function"
526
+ },
527
+ {
528
+ "inputs": [
529
+ {
530
+ "internalType": "bytes32",
531
+ "name": "mandateId",
532
+ "type": "bytes32"
533
+ }
534
+ ],
535
+ "name": "getMandate",
536
+ "outputs": [
537
+ {
538
+ "components": [
539
+ {
540
+ "internalType": "address",
541
+ "name": "payer",
542
+ "type": "address"
543
+ },
544
+ {
545
+ "internalType": "uint48",
546
+ "name": "createdAt",
547
+ "type": "uint48"
548
+ },
549
+ {
550
+ "internalType": "uint48",
551
+ "name": "lastChargedAt",
552
+ "type": "uint48"
553
+ },
554
+ {
555
+ "internalType": "address",
556
+ "name": "merchant",
557
+ "type": "address"
558
+ },
559
+ {
560
+ "internalType": "uint32",
561
+ "name": "interval",
562
+ "type": "uint32"
563
+ },
564
+ {
565
+ "internalType": "bool",
566
+ "name": "active",
567
+ "type": "bool"
568
+ },
569
+ {
570
+ "internalType": "address",
571
+ "name": "token",
572
+ "type": "address"
573
+ },
574
+ {
575
+ "internalType": "uint128",
576
+ "name": "amount",
577
+ "type": "uint128"
578
+ },
579
+ {
580
+ "internalType": "uint128",
581
+ "name": "maxTotalAmount",
582
+ "type": "uint128"
583
+ },
584
+ {
585
+ "internalType": "uint128",
586
+ "name": "totalCharged",
587
+ "type": "uint128"
588
+ },
589
+ {
590
+ "internalType": "bytes32",
591
+ "name": "referenceId",
592
+ "type": "bytes32"
593
+ }
594
+ ],
595
+ "internalType": "struct PolarLoop.Mandate",
596
+ "name": "",
597
+ "type": "tuple"
598
+ }
599
+ ],
600
+ "stateMutability": "view",
601
+ "type": "function"
602
+ },
603
+ {
604
+ "inputs": [
605
+ {
606
+ "internalType": "bytes32",
607
+ "name": "referenceId",
608
+ "type": "bytes32"
609
+ }
610
+ ],
611
+ "name": "getMandateByReferenceId",
612
+ "outputs": [
613
+ {
614
+ "internalType": "bytes32",
615
+ "name": "mandateId",
616
+ "type": "bytes32"
617
+ },
618
+ {
619
+ "components": [
620
+ {
621
+ "internalType": "address",
622
+ "name": "payer",
623
+ "type": "address"
624
+ },
625
+ {
626
+ "internalType": "uint48",
627
+ "name": "createdAt",
628
+ "type": "uint48"
629
+ },
630
+ {
631
+ "internalType": "uint48",
632
+ "name": "lastChargedAt",
633
+ "type": "uint48"
634
+ },
635
+ {
636
+ "internalType": "address",
637
+ "name": "merchant",
638
+ "type": "address"
639
+ },
640
+ {
641
+ "internalType": "uint32",
642
+ "name": "interval",
643
+ "type": "uint32"
644
+ },
645
+ {
646
+ "internalType": "bool",
647
+ "name": "active",
648
+ "type": "bool"
649
+ },
650
+ {
651
+ "internalType": "address",
652
+ "name": "token",
653
+ "type": "address"
654
+ },
655
+ {
656
+ "internalType": "uint128",
657
+ "name": "amount",
658
+ "type": "uint128"
659
+ },
660
+ {
661
+ "internalType": "uint128",
662
+ "name": "maxTotalAmount",
663
+ "type": "uint128"
664
+ },
665
+ {
666
+ "internalType": "uint128",
667
+ "name": "totalCharged",
668
+ "type": "uint128"
669
+ },
670
+ {
671
+ "internalType": "bytes32",
672
+ "name": "referenceId",
673
+ "type": "bytes32"
674
+ }
675
+ ],
676
+ "internalType": "struct PolarLoop.Mandate",
677
+ "name": "mandate",
678
+ "type": "tuple"
679
+ }
680
+ ],
681
+ "stateMutability": "view",
682
+ "type": "function"
683
+ },
684
+ {
685
+ "inputs": [
686
+ {
687
+ "internalType": "address",
688
+ "name": "payer",
689
+ "type": "address"
690
+ },
691
+ {
692
+ "internalType": "address",
693
+ "name": "merchant",
694
+ "type": "address"
695
+ },
696
+ {
697
+ "internalType": "address",
698
+ "name": "token",
699
+ "type": "address"
700
+ },
701
+ {
702
+ "internalType": "uint256",
703
+ "name": "nonce",
704
+ "type": "uint256"
705
+ }
706
+ ],
707
+ "name": "getMandateId",
708
+ "outputs": [
709
+ {
710
+ "internalType": "bytes32",
711
+ "name": "",
712
+ "type": "bytes32"
713
+ }
714
+ ],
715
+ "stateMutability": "pure",
716
+ "type": "function"
717
+ },
718
+ {
719
+ "inputs": [
720
+ {
721
+ "internalType": "address",
722
+ "name": "payer",
723
+ "type": "address"
724
+ }
725
+ ],
726
+ "name": "getPayerMandates",
727
+ "outputs": [
728
+ {
729
+ "internalType": "bytes32[]",
730
+ "name": "",
731
+ "type": "bytes32[]"
732
+ }
733
+ ],
734
+ "stateMutability": "view",
735
+ "type": "function"
736
+ },
737
+ {
738
+ "inputs": [
739
+ {
740
+ "internalType": "bytes32",
741
+ "name": "role",
742
+ "type": "bytes32"
743
+ }
744
+ ],
745
+ "name": "getRoleAdmin",
746
+ "outputs": [
747
+ {
748
+ "internalType": "bytes32",
749
+ "name": "",
750
+ "type": "bytes32"
751
+ }
752
+ ],
753
+ "stateMutability": "view",
754
+ "type": "function"
755
+ },
756
+ {
757
+ "inputs": [
758
+ {
759
+ "internalType": "bytes32",
760
+ "name": "role",
761
+ "type": "bytes32"
762
+ },
763
+ {
764
+ "internalType": "address",
765
+ "name": "account",
766
+ "type": "address"
767
+ }
768
+ ],
769
+ "name": "grantRole",
770
+ "outputs": [],
771
+ "stateMutability": "nonpayable",
772
+ "type": "function"
773
+ },
774
+ {
775
+ "inputs": [
776
+ {
777
+ "internalType": "bytes32",
778
+ "name": "role",
779
+ "type": "bytes32"
780
+ },
781
+ {
782
+ "internalType": "address",
783
+ "name": "account",
784
+ "type": "address"
785
+ }
786
+ ],
787
+ "name": "hasRole",
788
+ "outputs": [
789
+ {
790
+ "internalType": "bool",
791
+ "name": "",
792
+ "type": "bool"
793
+ }
794
+ ],
795
+ "stateMutability": "view",
796
+ "type": "function"
797
+ },
798
+ {
799
+ "inputs": [
800
+ {
801
+ "internalType": "bytes32",
802
+ "name": "mandateId",
803
+ "type": "bytes32"
804
+ }
805
+ ],
806
+ "name": "isChargeReady",
807
+ "outputs": [
808
+ {
809
+ "internalType": "bool",
810
+ "name": "ready",
811
+ "type": "bool"
812
+ },
813
+ {
814
+ "internalType": "string",
815
+ "name": "reason",
816
+ "type": "string"
817
+ }
818
+ ],
819
+ "stateMutability": "view",
820
+ "type": "function"
821
+ },
822
+ {
823
+ "inputs": [],
824
+ "name": "minInterval",
825
+ "outputs": [
826
+ {
827
+ "internalType": "uint32",
828
+ "name": "",
829
+ "type": "uint32"
830
+ }
831
+ ],
832
+ "stateMutability": "view",
833
+ "type": "function"
834
+ },
835
+ {
836
+ "inputs": [],
837
+ "name": "pause",
838
+ "outputs": [],
839
+ "stateMutability": "nonpayable",
840
+ "type": "function"
841
+ },
842
+ {
843
+ "inputs": [],
844
+ "name": "paused",
845
+ "outputs": [
846
+ {
847
+ "internalType": "bool",
848
+ "name": "",
849
+ "type": "bool"
850
+ }
851
+ ],
852
+ "stateMutability": "view",
853
+ "type": "function"
854
+ },
855
+ {
856
+ "inputs": [
857
+ {
858
+ "internalType": "bytes32",
859
+ "name": "role",
860
+ "type": "bytes32"
861
+ },
862
+ {
863
+ "internalType": "address",
864
+ "name": "callerConfirmation",
865
+ "type": "address"
866
+ }
867
+ ],
868
+ "name": "renounceRole",
869
+ "outputs": [],
870
+ "stateMutability": "nonpayable",
871
+ "type": "function"
872
+ },
873
+ {
874
+ "inputs": [
875
+ {
876
+ "internalType": "address",
877
+ "name": "token",
878
+ "type": "address"
879
+ },
880
+ {
881
+ "internalType": "uint256",
882
+ "name": "amount",
883
+ "type": "uint256"
884
+ }
885
+ ],
886
+ "name": "rescueERC20",
887
+ "outputs": [],
888
+ "stateMutability": "nonpayable",
889
+ "type": "function"
890
+ },
891
+ {
892
+ "inputs": [],
893
+ "name": "rescueETH",
894
+ "outputs": [],
895
+ "stateMutability": "nonpayable",
896
+ "type": "function"
897
+ },
898
+ {
899
+ "inputs": [
900
+ {
901
+ "internalType": "bytes32",
902
+ "name": "mandateId",
903
+ "type": "bytes32"
904
+ }
905
+ ],
906
+ "name": "revokeMandate",
907
+ "outputs": [],
908
+ "stateMutability": "nonpayable",
909
+ "type": "function"
910
+ },
911
+ {
912
+ "inputs": [
913
+ {
914
+ "internalType": "bytes32",
915
+ "name": "role",
916
+ "type": "bytes32"
917
+ },
918
+ {
919
+ "internalType": "address",
920
+ "name": "account",
921
+ "type": "address"
922
+ }
923
+ ],
924
+ "name": "revokeRole",
925
+ "outputs": [],
926
+ "stateMutability": "nonpayable",
927
+ "type": "function"
928
+ },
929
+ {
930
+ "inputs": [
931
+ {
932
+ "internalType": "bytes32",
933
+ "name": "mandateId",
934
+ "type": "bytes32"
935
+ }
936
+ ],
937
+ "name": "selfCharge",
938
+ "outputs": [],
939
+ "stateMutability": "nonpayable",
940
+ "type": "function"
941
+ },
942
+ {
943
+ "inputs": [
944
+ {
945
+ "internalType": "bytes4",
946
+ "name": "interfaceId",
947
+ "type": "bytes4"
948
+ }
949
+ ],
950
+ "name": "supportsInterface",
951
+ "outputs": [
952
+ {
953
+ "internalType": "bool",
954
+ "name": "",
955
+ "type": "bool"
956
+ }
957
+ ],
958
+ "stateMutability": "view",
959
+ "type": "function"
960
+ },
961
+ {
962
+ "inputs": [],
963
+ "name": "unpause",
964
+ "outputs": [],
965
+ "stateMutability": "nonpayable",
966
+ "type": "function"
967
+ },
968
+ {
969
+ "stateMutability": "payable",
970
+ "type": "receive"
971
+ }
972
+ ]