@gitmyabi/tip20controller 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,3473 @@
1
+ import type { Abi, Address, PublicClient, WalletClient, GetContractReturnType } from 'viem';
2
+ import { getContract } from 'viem';
3
+
4
+
5
+ /**
6
+ * Approval struct type
7
+ */
8
+ export type Approval = {
9
+ amount: bigint;
10
+ recipient: `0x${string}`;
11
+ stablecoin: `0x${string}`;
12
+ expiry: bigint;
13
+ flags: bigint;
14
+ operationId: bigint;
15
+ controller: `0x${string}`;
16
+ };
17
+
18
+ /**
19
+ * IMintIntent.ApprovalParams struct type
20
+ */
21
+ export type IMintIntent_ApprovalParams = {
22
+ operationId: bigint;
23
+ holdId: `0x${string}`;
24
+ amount: bigint;
25
+ recipient: `0x${string}`;
26
+ stablecoin: `0x${string}`;
27
+ };
28
+ /**
29
+ * TIP20Controller_json ABI
30
+ *
31
+ * This ABI is typed using viem's type system for full type safety.
32
+ */
33
+ export const TIP20Controller_jsonAbi = [
34
+ {
35
+ "inputs": [
36
+ {
37
+ "internalType": "address",
38
+ "name": "_reserveLedgerToken",
39
+ "type": "address"
40
+ },
41
+ {
42
+ "internalType": "bool",
43
+ "name": "_disableInitializer",
44
+ "type": "bool"
45
+ }
46
+ ],
47
+ "stateMutability": "nonpayable",
48
+ "type": "constructor"
49
+ },
50
+ {
51
+ "inputs": [],
52
+ "name": "AccessControlBadConfirmation",
53
+ "type": "error"
54
+ },
55
+ {
56
+ "inputs": [
57
+ {
58
+ "internalType": "address",
59
+ "name": "account",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "internalType": "bytes32",
64
+ "name": "neededRole",
65
+ "type": "bytes32"
66
+ }
67
+ ],
68
+ "name": "AccessControlUnauthorizedAccount",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [
73
+ {
74
+ "internalType": "address",
75
+ "name": "target",
76
+ "type": "address"
77
+ }
78
+ ],
79
+ "name": "AddressEmptyCode",
80
+ "type": "error"
81
+ },
82
+ {
83
+ "inputs": [],
84
+ "name": "AmountCannotBeZero",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "AmountExceedsAbsoluteMax",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [
94
+ {
95
+ "internalType": "bytes32",
96
+ "name": "_holdId",
97
+ "type": "bytes32"
98
+ }
99
+ ],
100
+ "name": "ApprovalExistsForHoldId",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [
105
+ {
106
+ "internalType": "uint256",
107
+ "name": "_operationId",
108
+ "type": "uint256"
109
+ }
110
+ ],
111
+ "name": "ApprovalExistsForOperationId",
112
+ "type": "error"
113
+ },
114
+ {
115
+ "inputs": [
116
+ {
117
+ "internalType": "bytes32",
118
+ "name": "_holdId",
119
+ "type": "bytes32"
120
+ },
121
+ {
122
+ "internalType": "uint64",
123
+ "name": "_newExpiry",
124
+ "type": "uint64"
125
+ },
126
+ {
127
+ "internalType": "uint64",
128
+ "name": "_oldExpiry",
129
+ "type": "uint64"
130
+ }
131
+ ],
132
+ "name": "ApprovalExpiryNotExtended",
133
+ "type": "error"
134
+ },
135
+ {
136
+ "inputs": [
137
+ {
138
+ "internalType": "bytes32",
139
+ "name": "_holdId",
140
+ "type": "bytes32"
141
+ }
142
+ ],
143
+ "name": "ApprovalNotExistsForHoldId",
144
+ "type": "error"
145
+ },
146
+ {
147
+ "inputs": [
148
+ {
149
+ "internalType": "address",
150
+ "name": "_registry",
151
+ "type": "address"
152
+ }
153
+ ],
154
+ "name": "ControllerNotAuthorizedOnRegistry",
155
+ "type": "error"
156
+ },
157
+ {
158
+ "inputs": [
159
+ {
160
+ "internalType": "address",
161
+ "name": "implementation",
162
+ "type": "address"
163
+ }
164
+ ],
165
+ "name": "ERC1967InvalidImplementation",
166
+ "type": "error"
167
+ },
168
+ {
169
+ "inputs": [],
170
+ "name": "ERC1967NonPayable",
171
+ "type": "error"
172
+ },
173
+ {
174
+ "inputs": [],
175
+ "name": "FailedCall",
176
+ "type": "error"
177
+ },
178
+ {
179
+ "inputs": [],
180
+ "name": "InvalidAmount",
181
+ "type": "error"
182
+ },
183
+ {
184
+ "inputs": [
185
+ {
186
+ "internalType": "bytes32",
187
+ "name": "_holdId",
188
+ "type": "bytes32"
189
+ },
190
+ {
191
+ "internalType": "uint256",
192
+ "name": "_flags",
193
+ "type": "uint256"
194
+ }
195
+ ],
196
+ "name": "InvalidApproval",
197
+ "type": "error"
198
+ },
199
+ {
200
+ "inputs": [
201
+ {
202
+ "internalType": "bool",
203
+ "name": "_invalidHoldId",
204
+ "type": "bool"
205
+ },
206
+ {
207
+ "internalType": "bool",
208
+ "name": "_invalidOperationId",
209
+ "type": "bool"
210
+ },
211
+ {
212
+ "internalType": "bool",
213
+ "name": "_invalidAmount",
214
+ "type": "bool"
215
+ },
216
+ {
217
+ "internalType": "bool",
218
+ "name": "_invalidRecipient",
219
+ "type": "bool"
220
+ },
221
+ {
222
+ "internalType": "bool",
223
+ "name": "_stablecoinIsWrong",
224
+ "type": "bool"
225
+ },
226
+ {
227
+ "internalType": "bool",
228
+ "name": "_invalidExpiry",
229
+ "type": "bool"
230
+ }
231
+ ],
232
+ "name": "InvalidApprovalParams",
233
+ "type": "error"
234
+ },
235
+ {
236
+ "inputs": [],
237
+ "name": "InvalidExpiry",
238
+ "type": "error"
239
+ },
240
+ {
241
+ "inputs": [],
242
+ "name": "InvalidHoldId",
243
+ "type": "error"
244
+ },
245
+ {
246
+ "inputs": [],
247
+ "name": "InvalidInitialization",
248
+ "type": "error"
249
+ },
250
+ {
251
+ "inputs": [],
252
+ "name": "InvalidOperationId",
253
+ "type": "error"
254
+ },
255
+ {
256
+ "inputs": [],
257
+ "name": "InvalidRecipient",
258
+ "type": "error"
259
+ },
260
+ {
261
+ "inputs": [],
262
+ "name": "InvalidRegistry",
263
+ "type": "error"
264
+ },
265
+ {
266
+ "inputs": [],
267
+ "name": "InvalidStablecoin",
268
+ "type": "error"
269
+ },
270
+ {
271
+ "inputs": [],
272
+ "name": "InvalidStablecoinContract",
273
+ "type": "error"
274
+ },
275
+ {
276
+ "inputs": [],
277
+ "name": "MintIntentRequired",
278
+ "type": "error"
279
+ },
280
+ {
281
+ "inputs": [],
282
+ "name": "MintTxnLimitExceeded",
283
+ "type": "error"
284
+ },
285
+ {
286
+ "inputs": [],
287
+ "name": "MinterAllowanceExceeded",
288
+ "type": "error"
289
+ },
290
+ {
291
+ "inputs": [
292
+ {
293
+ "internalType": "bytes32",
294
+ "name": "_holdId",
295
+ "type": "bytes32"
296
+ },
297
+ {
298
+ "internalType": "address",
299
+ "name": "_controller",
300
+ "type": "address"
301
+ },
302
+ {
303
+ "internalType": "address",
304
+ "name": "_caller",
305
+ "type": "address"
306
+ }
307
+ ],
308
+ "name": "NotApprovalController",
309
+ "type": "error"
310
+ },
311
+ {
312
+ "inputs": [],
313
+ "name": "NotInitializing",
314
+ "type": "error"
315
+ },
316
+ {
317
+ "inputs": [
318
+ {
319
+ "internalType": "uint256",
320
+ "name": "_reserveLedgerPrecision",
321
+ "type": "uint256"
322
+ },
323
+ {
324
+ "internalType": "uint256",
325
+ "name": "_stablecoinPrecision",
326
+ "type": "uint256"
327
+ }
328
+ ],
329
+ "name": "PrecisionMismatch",
330
+ "type": "error"
331
+ },
332
+ {
333
+ "inputs": [
334
+ {
335
+ "internalType": "address",
336
+ "name": "token",
337
+ "type": "address"
338
+ }
339
+ ],
340
+ "name": "SafeERC20FailedOperation",
341
+ "type": "error"
342
+ },
343
+ {
344
+ "inputs": [],
345
+ "name": "StablecoinNotPaused",
346
+ "type": "error"
347
+ },
348
+ {
349
+ "inputs": [],
350
+ "name": "StablecoinPaused",
351
+ "type": "error"
352
+ },
353
+ {
354
+ "inputs": [],
355
+ "name": "UUPSUnauthorizedCallContext",
356
+ "type": "error"
357
+ },
358
+ {
359
+ "inputs": [
360
+ {
361
+ "internalType": "bytes32",
362
+ "name": "slot",
363
+ "type": "bytes32"
364
+ }
365
+ ],
366
+ "name": "UUPSUnsupportedProxiableUUID",
367
+ "type": "error"
368
+ },
369
+ {
370
+ "anonymous": false,
371
+ "inputs": [
372
+ {
373
+ "indexed": true,
374
+ "internalType": "address",
375
+ "name": "_publisher",
376
+ "type": "address"
377
+ },
378
+ {
379
+ "indexed": true,
380
+ "internalType": "uint256",
381
+ "name": "_operationId",
382
+ "type": "uint256"
383
+ },
384
+ {
385
+ "indexed": true,
386
+ "internalType": "bytes32",
387
+ "name": "_holdId",
388
+ "type": "bytes32"
389
+ }
390
+ ],
391
+ "name": "ApprovalConsumed",
392
+ "type": "event"
393
+ },
394
+ {
395
+ "anonymous": false,
396
+ "inputs": [
397
+ {
398
+ "indexed": true,
399
+ "internalType": "address",
400
+ "name": "_publisher",
401
+ "type": "address"
402
+ },
403
+ {
404
+ "indexed": true,
405
+ "internalType": "bytes32",
406
+ "name": "_holdId",
407
+ "type": "bytes32"
408
+ },
409
+ {
410
+ "indexed": true,
411
+ "internalType": "uint256",
412
+ "name": "_operationId",
413
+ "type": "uint256"
414
+ },
415
+ {
416
+ "indexed": false,
417
+ "internalType": "uint256",
418
+ "name": "_newExpiry",
419
+ "type": "uint256"
420
+ }
421
+ ],
422
+ "name": "ApprovalExtended",
423
+ "type": "event"
424
+ },
425
+ {
426
+ "anonymous": false,
427
+ "inputs": [
428
+ {
429
+ "indexed": true,
430
+ "internalType": "address",
431
+ "name": "_publisher",
432
+ "type": "address"
433
+ },
434
+ {
435
+ "indexed": true,
436
+ "internalType": "uint256",
437
+ "name": "_operationId",
438
+ "type": "uint256"
439
+ },
440
+ {
441
+ "indexed": true,
442
+ "internalType": "bytes32",
443
+ "name": "_holdId",
444
+ "type": "bytes32"
445
+ },
446
+ {
447
+ "indexed": false,
448
+ "internalType": "address",
449
+ "name": "_stablecoin",
450
+ "type": "address"
451
+ },
452
+ {
453
+ "indexed": false,
454
+ "internalType": "address",
455
+ "name": "_recipient",
456
+ "type": "address"
457
+ },
458
+ {
459
+ "indexed": false,
460
+ "internalType": "uint256",
461
+ "name": "_amount",
462
+ "type": "uint256"
463
+ },
464
+ {
465
+ "indexed": false,
466
+ "internalType": "uint256",
467
+ "name": "_expiry",
468
+ "type": "uint256"
469
+ }
470
+ ],
471
+ "name": "ApprovalPublished",
472
+ "type": "event"
473
+ },
474
+ {
475
+ "anonymous": false,
476
+ "inputs": [
477
+ {
478
+ "indexed": true,
479
+ "internalType": "address",
480
+ "name": "_publisher",
481
+ "type": "address"
482
+ },
483
+ {
484
+ "indexed": true,
485
+ "internalType": "bytes32",
486
+ "name": "_holdId",
487
+ "type": "bytes32"
488
+ },
489
+ {
490
+ "indexed": true,
491
+ "internalType": "uint256",
492
+ "name": "_operationId",
493
+ "type": "uint256"
494
+ }
495
+ ],
496
+ "name": "ApprovalRevoked",
497
+ "type": "event"
498
+ },
499
+ {
500
+ "anonymous": false,
501
+ "inputs": [
502
+ {
503
+ "indexed": true,
504
+ "internalType": "address",
505
+ "name": "sender",
506
+ "type": "address"
507
+ },
508
+ {
509
+ "indexed": true,
510
+ "internalType": "address",
511
+ "name": "stablecoinContract",
512
+ "type": "address"
513
+ },
514
+ {
515
+ "indexed": false,
516
+ "internalType": "uint256",
517
+ "name": "amount",
518
+ "type": "uint256"
519
+ }
520
+ ],
521
+ "name": "Burn",
522
+ "type": "event"
523
+ },
524
+ {
525
+ "anonymous": false,
526
+ "inputs": [
527
+ {
528
+ "indexed": false,
529
+ "internalType": "uint64",
530
+ "name": "version",
531
+ "type": "uint64"
532
+ }
533
+ ],
534
+ "name": "Initialized",
535
+ "type": "event"
536
+ },
537
+ {
538
+ "anonymous": false,
539
+ "inputs": [
540
+ {
541
+ "indexed": true,
542
+ "internalType": "address",
543
+ "name": "sender",
544
+ "type": "address"
545
+ },
546
+ {
547
+ "indexed": true,
548
+ "internalType": "address",
549
+ "name": "stablecoinContract",
550
+ "type": "address"
551
+ },
552
+ {
553
+ "indexed": true,
554
+ "internalType": "address",
555
+ "name": "to",
556
+ "type": "address"
557
+ },
558
+ {
559
+ "indexed": false,
560
+ "internalType": "uint256",
561
+ "name": "amount",
562
+ "type": "uint256"
563
+ }
564
+ ],
565
+ "name": "Mint",
566
+ "type": "event"
567
+ },
568
+ {
569
+ "anonymous": false,
570
+ "inputs": [
571
+ {
572
+ "indexed": true,
573
+ "internalType": "address",
574
+ "name": "_admin",
575
+ "type": "address"
576
+ },
577
+ {
578
+ "indexed": true,
579
+ "internalType": "address",
580
+ "name": "_oldRegistry",
581
+ "type": "address"
582
+ },
583
+ {
584
+ "indexed": true,
585
+ "internalType": "address",
586
+ "name": "_newRegistry",
587
+ "type": "address"
588
+ }
589
+ ],
590
+ "name": "MintIntentRegistrySet",
591
+ "type": "event"
592
+ },
593
+ {
594
+ "anonymous": false,
595
+ "inputs": [
596
+ {
597
+ "indexed": true,
598
+ "internalType": "address",
599
+ "name": "sender",
600
+ "type": "address"
601
+ },
602
+ {
603
+ "indexed": false,
604
+ "internalType": "enum ITIP20Controller.MintIntentVersion",
605
+ "name": "mintIntentVersion",
606
+ "type": "uint8"
607
+ }
608
+ ],
609
+ "name": "MintIntentVersionSet",
610
+ "type": "event"
611
+ },
612
+ {
613
+ "anonymous": false,
614
+ "inputs": [
615
+ {
616
+ "indexed": true,
617
+ "internalType": "address",
618
+ "name": "sender",
619
+ "type": "address"
620
+ },
621
+ {
622
+ "indexed": true,
623
+ "internalType": "address",
624
+ "name": "stablecoinContract",
625
+ "type": "address"
626
+ },
627
+ {
628
+ "indexed": true,
629
+ "internalType": "address",
630
+ "name": "minter",
631
+ "type": "address"
632
+ },
633
+ {
634
+ "indexed": false,
635
+ "internalType": "uint256",
636
+ "name": "minterAllowance",
637
+ "type": "uint256"
638
+ }
639
+ ],
640
+ "name": "MinterAllowanceSet",
641
+ "type": "event"
642
+ },
643
+ {
644
+ "anonymous": false,
645
+ "inputs": [
646
+ {
647
+ "indexed": true,
648
+ "internalType": "address",
649
+ "name": "_publisher",
650
+ "type": "address"
651
+ },
652
+ {
653
+ "indexed": true,
654
+ "internalType": "uint256",
655
+ "name": "_operationId",
656
+ "type": "uint256"
657
+ },
658
+ {
659
+ "indexed": true,
660
+ "internalType": "bytes32",
661
+ "name": "_holdId",
662
+ "type": "bytes32"
663
+ }
664
+ ],
665
+ "name": "OperationIdRevoked",
666
+ "type": "event"
667
+ },
668
+ {
669
+ "anonymous": false,
670
+ "inputs": [
671
+ {
672
+ "indexed": true,
673
+ "internalType": "address",
674
+ "name": "sender",
675
+ "type": "address"
676
+ },
677
+ {
678
+ "indexed": true,
679
+ "internalType": "address",
680
+ "name": "stablecoinContract",
681
+ "type": "address"
682
+ },
683
+ {
684
+ "indexed": true,
685
+ "internalType": "address",
686
+ "name": "reserveStore",
687
+ "type": "address"
688
+ }
689
+ ],
690
+ "name": "ReserveStoreSet",
691
+ "type": "event"
692
+ },
693
+ {
694
+ "anonymous": false,
695
+ "inputs": [
696
+ {
697
+ "indexed": true,
698
+ "internalType": "bytes32",
699
+ "name": "role",
700
+ "type": "bytes32"
701
+ },
702
+ {
703
+ "indexed": true,
704
+ "internalType": "bytes32",
705
+ "name": "previousAdminRole",
706
+ "type": "bytes32"
707
+ },
708
+ {
709
+ "indexed": true,
710
+ "internalType": "bytes32",
711
+ "name": "newAdminRole",
712
+ "type": "bytes32"
713
+ }
714
+ ],
715
+ "name": "RoleAdminChanged",
716
+ "type": "event"
717
+ },
718
+ {
719
+ "anonymous": false,
720
+ "inputs": [
721
+ {
722
+ "indexed": true,
723
+ "internalType": "bytes32",
724
+ "name": "role",
725
+ "type": "bytes32"
726
+ },
727
+ {
728
+ "indexed": true,
729
+ "internalType": "address",
730
+ "name": "account",
731
+ "type": "address"
732
+ },
733
+ {
734
+ "indexed": true,
735
+ "internalType": "address",
736
+ "name": "sender",
737
+ "type": "address"
738
+ }
739
+ ],
740
+ "name": "RoleGranted",
741
+ "type": "event"
742
+ },
743
+ {
744
+ "anonymous": false,
745
+ "inputs": [
746
+ {
747
+ "indexed": true,
748
+ "internalType": "bytes32",
749
+ "name": "role",
750
+ "type": "bytes32"
751
+ },
752
+ {
753
+ "indexed": true,
754
+ "internalType": "address",
755
+ "name": "account",
756
+ "type": "address"
757
+ },
758
+ {
759
+ "indexed": true,
760
+ "internalType": "address",
761
+ "name": "sender",
762
+ "type": "address"
763
+ }
764
+ ],
765
+ "name": "RoleRevoked",
766
+ "type": "event"
767
+ },
768
+ {
769
+ "anonymous": false,
770
+ "inputs": [
771
+ {
772
+ "indexed": true,
773
+ "internalType": "address",
774
+ "name": "sender",
775
+ "type": "address"
776
+ },
777
+ {
778
+ "indexed": true,
779
+ "internalType": "address",
780
+ "name": "stablecoinContract",
781
+ "type": "address"
782
+ },
783
+ {
784
+ "indexed": false,
785
+ "internalType": "bool",
786
+ "name": "isPaused",
787
+ "type": "bool"
788
+ }
789
+ ],
790
+ "name": "StablecoinPauseSet",
791
+ "type": "event"
792
+ },
793
+ {
794
+ "anonymous": false,
795
+ "inputs": [
796
+ {
797
+ "indexed": true,
798
+ "internalType": "address",
799
+ "name": "sender",
800
+ "type": "address"
801
+ },
802
+ {
803
+ "indexed": true,
804
+ "internalType": "address",
805
+ "name": "stablecoinContract",
806
+ "type": "address"
807
+ },
808
+ {
809
+ "indexed": false,
810
+ "internalType": "uint256",
811
+ "name": "mintTxnLimit",
812
+ "type": "uint256"
813
+ }
814
+ ],
815
+ "name": "TxnMintLimitSet",
816
+ "type": "event"
817
+ },
818
+ {
819
+ "anonymous": false,
820
+ "inputs": [
821
+ {
822
+ "indexed": true,
823
+ "internalType": "address",
824
+ "name": "sender",
825
+ "type": "address"
826
+ },
827
+ {
828
+ "indexed": true,
829
+ "internalType": "address",
830
+ "name": "stablecoinContract",
831
+ "type": "address"
832
+ },
833
+ {
834
+ "indexed": false,
835
+ "internalType": "uint256",
836
+ "name": "amount",
837
+ "type": "uint256"
838
+ }
839
+ ],
840
+ "name": "Unwrap",
841
+ "type": "event"
842
+ },
843
+ {
844
+ "anonymous": false,
845
+ "inputs": [
846
+ {
847
+ "indexed": true,
848
+ "internalType": "address",
849
+ "name": "implementation",
850
+ "type": "address"
851
+ }
852
+ ],
853
+ "name": "Upgraded",
854
+ "type": "event"
855
+ },
856
+ {
857
+ "anonymous": false,
858
+ "inputs": [
859
+ {
860
+ "indexed": true,
861
+ "internalType": "address",
862
+ "name": "sender",
863
+ "type": "address"
864
+ },
865
+ {
866
+ "indexed": true,
867
+ "internalType": "address",
868
+ "name": "stablecoinContract",
869
+ "type": "address"
870
+ },
871
+ {
872
+ "indexed": true,
873
+ "internalType": "address",
874
+ "name": "to",
875
+ "type": "address"
876
+ },
877
+ {
878
+ "indexed": false,
879
+ "internalType": "uint256",
880
+ "name": "amount",
881
+ "type": "uint256"
882
+ }
883
+ ],
884
+ "name": "Wrap",
885
+ "type": "event"
886
+ },
887
+ {
888
+ "inputs": [],
889
+ "name": "ABSOLUTE_MAX",
890
+ "outputs": [
891
+ {
892
+ "internalType": "uint256",
893
+ "name": "",
894
+ "type": "uint256"
895
+ }
896
+ ],
897
+ "stateMutability": "view",
898
+ "type": "function"
899
+ },
900
+ {
901
+ "inputs": [],
902
+ "name": "BRIDGE_ECOSYSTEM_CONTRACT_ROLE",
903
+ "outputs": [
904
+ {
905
+ "internalType": "bytes32",
906
+ "name": "",
907
+ "type": "bytes32"
908
+ }
909
+ ],
910
+ "stateMutability": "view",
911
+ "type": "function"
912
+ },
913
+ {
914
+ "inputs": [],
915
+ "name": "BURNER_ROLE",
916
+ "outputs": [
917
+ {
918
+ "internalType": "bytes32",
919
+ "name": "",
920
+ "type": "bytes32"
921
+ }
922
+ ],
923
+ "stateMutability": "view",
924
+ "type": "function"
925
+ },
926
+ {
927
+ "inputs": [],
928
+ "name": "DEFAULT_ADMIN_ROLE",
929
+ "outputs": [
930
+ {
931
+ "internalType": "bytes32",
932
+ "name": "",
933
+ "type": "bytes32"
934
+ }
935
+ ],
936
+ "stateMutability": "view",
937
+ "type": "function"
938
+ },
939
+ {
940
+ "inputs": [],
941
+ "name": "MINT_RATE_LIMIT_SETTER_ROLE",
942
+ "outputs": [
943
+ {
944
+ "internalType": "bytes32",
945
+ "name": "",
946
+ "type": "bytes32"
947
+ }
948
+ ],
949
+ "stateMutability": "view",
950
+ "type": "function"
951
+ },
952
+ {
953
+ "inputs": [],
954
+ "name": "PUBLISHER_ROLE",
955
+ "outputs": [
956
+ {
957
+ "internalType": "bytes32",
958
+ "name": "",
959
+ "type": "bytes32"
960
+ }
961
+ ],
962
+ "stateMutability": "view",
963
+ "type": "function"
964
+ },
965
+ {
966
+ "inputs": [],
967
+ "name": "RESERVE_LEDGER_TOKEN",
968
+ "outputs": [
969
+ {
970
+ "internalType": "address",
971
+ "name": "",
972
+ "type": "address"
973
+ }
974
+ ],
975
+ "stateMutability": "view",
976
+ "type": "function"
977
+ },
978
+ {
979
+ "inputs": [],
980
+ "name": "STABLECOIN_PAUSER_ROLE",
981
+ "outputs": [
982
+ {
983
+ "internalType": "bytes32",
984
+ "name": "",
985
+ "type": "bytes32"
986
+ }
987
+ ],
988
+ "stateMutability": "view",
989
+ "type": "function"
990
+ },
991
+ {
992
+ "inputs": [],
993
+ "name": "UNWRAPPER_ROLE",
994
+ "outputs": [
995
+ {
996
+ "internalType": "bytes32",
997
+ "name": "",
998
+ "type": "bytes32"
999
+ }
1000
+ ],
1001
+ "stateMutability": "view",
1002
+ "type": "function"
1003
+ },
1004
+ {
1005
+ "inputs": [],
1006
+ "name": "UPGRADE_INTERFACE_VERSION",
1007
+ "outputs": [
1008
+ {
1009
+ "internalType": "string",
1010
+ "name": "",
1011
+ "type": "string"
1012
+ }
1013
+ ],
1014
+ "stateMutability": "view",
1015
+ "type": "function"
1016
+ },
1017
+ {
1018
+ "inputs": [
1019
+ {
1020
+ "internalType": "address",
1021
+ "name": "stablecoinContract",
1022
+ "type": "address"
1023
+ },
1024
+ {
1025
+ "internalType": "uint256",
1026
+ "name": "amount",
1027
+ "type": "uint256"
1028
+ }
1029
+ ],
1030
+ "name": "burn",
1031
+ "outputs": [],
1032
+ "stateMutability": "nonpayable",
1033
+ "type": "function"
1034
+ },
1035
+ {
1036
+ "inputs": [
1037
+ {
1038
+ "internalType": "address",
1039
+ "name": "stablecoinContract",
1040
+ "type": "address"
1041
+ },
1042
+ {
1043
+ "internalType": "uint256",
1044
+ "name": "amount",
1045
+ "type": "uint256"
1046
+ },
1047
+ {
1048
+ "internalType": "uint256",
1049
+ "name": "operationId",
1050
+ "type": "uint256"
1051
+ }
1052
+ ],
1053
+ "name": "burnWithOperationId",
1054
+ "outputs": [],
1055
+ "stateMutability": "nonpayable",
1056
+ "type": "function"
1057
+ },
1058
+ {
1059
+ "inputs": [
1060
+ {
1061
+ "internalType": "bytes32",
1062
+ "name": "_holdId",
1063
+ "type": "bytes32"
1064
+ },
1065
+ {
1066
+ "internalType": "uint64",
1067
+ "name": "_expiry",
1068
+ "type": "uint64"
1069
+ }
1070
+ ],
1071
+ "name": "extendApproval",
1072
+ "outputs": [],
1073
+ "stateMutability": "nonpayable",
1074
+ "type": "function"
1075
+ },
1076
+ {
1077
+ "inputs": [
1078
+ {
1079
+ "internalType": "bytes32",
1080
+ "name": "_holdId",
1081
+ "type": "bytes32"
1082
+ }
1083
+ ],
1084
+ "name": "getApproval",
1085
+ "outputs": [
1086
+ {
1087
+ "components": [
1088
+ {
1089
+ "internalType": "uint256",
1090
+ "name": "amount",
1091
+ "type": "uint256"
1092
+ },
1093
+ {
1094
+ "internalType": "address",
1095
+ "name": "recipient",
1096
+ "type": "address"
1097
+ },
1098
+ {
1099
+ "internalType": "address",
1100
+ "name": "stablecoin",
1101
+ "type": "address"
1102
+ },
1103
+ {
1104
+ "internalType": "uint64",
1105
+ "name": "expiry",
1106
+ "type": "uint64"
1107
+ },
1108
+ {
1109
+ "internalType": "uint8",
1110
+ "name": "flags",
1111
+ "type": "uint8"
1112
+ },
1113
+ {
1114
+ "internalType": "uint256",
1115
+ "name": "operationId",
1116
+ "type": "uint256"
1117
+ },
1118
+ {
1119
+ "internalType": "address",
1120
+ "name": "controller",
1121
+ "type": "address"
1122
+ }
1123
+ ],
1124
+ "internalType": "struct Approval",
1125
+ "name": "",
1126
+ "type": "tuple"
1127
+ }
1128
+ ],
1129
+ "stateMutability": "view",
1130
+ "type": "function"
1131
+ },
1132
+ {
1133
+ "inputs": [
1134
+ {
1135
+ "internalType": "address",
1136
+ "name": "stablecoinContract",
1137
+ "type": "address"
1138
+ },
1139
+ {
1140
+ "internalType": "address",
1141
+ "name": "minter",
1142
+ "type": "address"
1143
+ }
1144
+ ],
1145
+ "name": "getMinterAllowance",
1146
+ "outputs": [
1147
+ {
1148
+ "internalType": "uint256",
1149
+ "name": "minterAllowance",
1150
+ "type": "uint256"
1151
+ }
1152
+ ],
1153
+ "stateMutability": "view",
1154
+ "type": "function"
1155
+ },
1156
+ {
1157
+ "inputs": [
1158
+ {
1159
+ "internalType": "address",
1160
+ "name": "stablecoinContract",
1161
+ "type": "address"
1162
+ }
1163
+ ],
1164
+ "name": "getReserveStore",
1165
+ "outputs": [
1166
+ {
1167
+ "internalType": "address",
1168
+ "name": "reserveStore",
1169
+ "type": "address"
1170
+ }
1171
+ ],
1172
+ "stateMutability": "view",
1173
+ "type": "function"
1174
+ },
1175
+ {
1176
+ "inputs": [
1177
+ {
1178
+ "internalType": "bytes32",
1179
+ "name": "role",
1180
+ "type": "bytes32"
1181
+ }
1182
+ ],
1183
+ "name": "getRoleAdmin",
1184
+ "outputs": [
1185
+ {
1186
+ "internalType": "bytes32",
1187
+ "name": "",
1188
+ "type": "bytes32"
1189
+ }
1190
+ ],
1191
+ "stateMutability": "view",
1192
+ "type": "function"
1193
+ },
1194
+ {
1195
+ "inputs": [
1196
+ {
1197
+ "internalType": "bytes32",
1198
+ "name": "role",
1199
+ "type": "bytes32"
1200
+ },
1201
+ {
1202
+ "internalType": "uint256",
1203
+ "name": "index",
1204
+ "type": "uint256"
1205
+ }
1206
+ ],
1207
+ "name": "getRoleMember",
1208
+ "outputs": [
1209
+ {
1210
+ "internalType": "address",
1211
+ "name": "",
1212
+ "type": "address"
1213
+ }
1214
+ ],
1215
+ "stateMutability": "view",
1216
+ "type": "function"
1217
+ },
1218
+ {
1219
+ "inputs": [
1220
+ {
1221
+ "internalType": "bytes32",
1222
+ "name": "role",
1223
+ "type": "bytes32"
1224
+ }
1225
+ ],
1226
+ "name": "getRoleMemberCount",
1227
+ "outputs": [
1228
+ {
1229
+ "internalType": "uint256",
1230
+ "name": "",
1231
+ "type": "uint256"
1232
+ }
1233
+ ],
1234
+ "stateMutability": "view",
1235
+ "type": "function"
1236
+ },
1237
+ {
1238
+ "inputs": [
1239
+ {
1240
+ "internalType": "bytes32",
1241
+ "name": "role",
1242
+ "type": "bytes32"
1243
+ }
1244
+ ],
1245
+ "name": "getRoleMembers",
1246
+ "outputs": [
1247
+ {
1248
+ "internalType": "address[]",
1249
+ "name": "",
1250
+ "type": "address[]"
1251
+ }
1252
+ ],
1253
+ "stateMutability": "view",
1254
+ "type": "function"
1255
+ },
1256
+ {
1257
+ "inputs": [
1258
+ {
1259
+ "internalType": "address",
1260
+ "name": "stablecoinContract",
1261
+ "type": "address"
1262
+ }
1263
+ ],
1264
+ "name": "getStablecoinTxnMintLimit",
1265
+ "outputs": [
1266
+ {
1267
+ "internalType": "uint256",
1268
+ "name": "mintTxnLimit",
1269
+ "type": "uint256"
1270
+ }
1271
+ ],
1272
+ "stateMutability": "view",
1273
+ "type": "function"
1274
+ },
1275
+ {
1276
+ "inputs": [
1277
+ {
1278
+ "internalType": "bytes32",
1279
+ "name": "role",
1280
+ "type": "bytes32"
1281
+ },
1282
+ {
1283
+ "internalType": "address",
1284
+ "name": "account",
1285
+ "type": "address"
1286
+ }
1287
+ ],
1288
+ "name": "grantRole",
1289
+ "outputs": [],
1290
+ "stateMutability": "nonpayable",
1291
+ "type": "function"
1292
+ },
1293
+ {
1294
+ "inputs": [
1295
+ {
1296
+ "internalType": "bytes32",
1297
+ "name": "role",
1298
+ "type": "bytes32"
1299
+ },
1300
+ {
1301
+ "internalType": "address",
1302
+ "name": "account",
1303
+ "type": "address"
1304
+ }
1305
+ ],
1306
+ "name": "hasRole",
1307
+ "outputs": [
1308
+ {
1309
+ "internalType": "bool",
1310
+ "name": "",
1311
+ "type": "bool"
1312
+ }
1313
+ ],
1314
+ "stateMutability": "view",
1315
+ "type": "function"
1316
+ },
1317
+ {
1318
+ "inputs": [
1319
+ {
1320
+ "internalType": "address",
1321
+ "name": "_admin",
1322
+ "type": "address"
1323
+ },
1324
+ {
1325
+ "internalType": "address",
1326
+ "name": "_publisher",
1327
+ "type": "address"
1328
+ },
1329
+ {
1330
+ "internalType": "address",
1331
+ "name": "_registry",
1332
+ "type": "address"
1333
+ }
1334
+ ],
1335
+ "name": "initialize",
1336
+ "outputs": [],
1337
+ "stateMutability": "nonpayable",
1338
+ "type": "function"
1339
+ },
1340
+ {
1341
+ "inputs": [
1342
+ {
1343
+ "internalType": "address",
1344
+ "name": "stablecoinContract",
1345
+ "type": "address"
1346
+ },
1347
+ {
1348
+ "internalType": "address",
1349
+ "name": "to",
1350
+ "type": "address"
1351
+ },
1352
+ {
1353
+ "internalType": "uint256",
1354
+ "name": "amount",
1355
+ "type": "uint256"
1356
+ }
1357
+ ],
1358
+ "name": "mint",
1359
+ "outputs": [],
1360
+ "stateMutability": "nonpayable",
1361
+ "type": "function"
1362
+ },
1363
+ {
1364
+ "inputs": [
1365
+ {
1366
+ "internalType": "address",
1367
+ "name": "stablecoinContract",
1368
+ "type": "address"
1369
+ },
1370
+ {
1371
+ "internalType": "address",
1372
+ "name": "to",
1373
+ "type": "address"
1374
+ },
1375
+ {
1376
+ "internalType": "uint256",
1377
+ "name": "amount",
1378
+ "type": "uint256"
1379
+ }
1380
+ ],
1381
+ "name": "mintBridgeEcosystem",
1382
+ "outputs": [],
1383
+ "stateMutability": "nonpayable",
1384
+ "type": "function"
1385
+ },
1386
+ {
1387
+ "inputs": [],
1388
+ "name": "mintIntentRegistry",
1389
+ "outputs": [
1390
+ {
1391
+ "internalType": "contract IMintIntentRegistry",
1392
+ "name": "",
1393
+ "type": "address"
1394
+ }
1395
+ ],
1396
+ "stateMutability": "view",
1397
+ "type": "function"
1398
+ },
1399
+ {
1400
+ "inputs": [],
1401
+ "name": "mintIntentVersion",
1402
+ "outputs": [
1403
+ {
1404
+ "internalType": "enum ITIP20Controller.MintIntentVersion",
1405
+ "name": "",
1406
+ "type": "uint8"
1407
+ }
1408
+ ],
1409
+ "stateMutability": "view",
1410
+ "type": "function"
1411
+ },
1412
+ {
1413
+ "inputs": [
1414
+ {
1415
+ "internalType": "address",
1416
+ "name": "stablecoinContract",
1417
+ "type": "address"
1418
+ }
1419
+ ],
1420
+ "name": "mintTxnLimits",
1421
+ "outputs": [
1422
+ {
1423
+ "internalType": "uint256",
1424
+ "name": "mintTxnLimit",
1425
+ "type": "uint256"
1426
+ }
1427
+ ],
1428
+ "stateMutability": "view",
1429
+ "type": "function"
1430
+ },
1431
+ {
1432
+ "inputs": [
1433
+ {
1434
+ "components": [
1435
+ {
1436
+ "internalType": "uint256",
1437
+ "name": "operationId",
1438
+ "type": "uint256"
1439
+ },
1440
+ {
1441
+ "internalType": "bytes32",
1442
+ "name": "holdId",
1443
+ "type": "bytes32"
1444
+ },
1445
+ {
1446
+ "internalType": "uint256",
1447
+ "name": "amount",
1448
+ "type": "uint256"
1449
+ },
1450
+ {
1451
+ "internalType": "address",
1452
+ "name": "recipient",
1453
+ "type": "address"
1454
+ },
1455
+ {
1456
+ "internalType": "address",
1457
+ "name": "stablecoin",
1458
+ "type": "address"
1459
+ }
1460
+ ],
1461
+ "internalType": "struct IMintIntent.ApprovalParams",
1462
+ "name": "_params",
1463
+ "type": "tuple"
1464
+ }
1465
+ ],
1466
+ "name": "mintWithApproval",
1467
+ "outputs": [],
1468
+ "stateMutability": "nonpayable",
1469
+ "type": "function"
1470
+ },
1471
+ {
1472
+ "inputs": [
1473
+ {
1474
+ "internalType": "address",
1475
+ "name": "stablecoinContract",
1476
+ "type": "address"
1477
+ },
1478
+ {
1479
+ "internalType": "address",
1480
+ "name": "user",
1481
+ "type": "address"
1482
+ }
1483
+ ],
1484
+ "name": "minterAllowances",
1485
+ "outputs": [
1486
+ {
1487
+ "internalType": "uint256",
1488
+ "name": "minterAllowance",
1489
+ "type": "uint256"
1490
+ }
1491
+ ],
1492
+ "stateMutability": "view",
1493
+ "type": "function"
1494
+ },
1495
+ {
1496
+ "inputs": [],
1497
+ "name": "proxiableUUID",
1498
+ "outputs": [
1499
+ {
1500
+ "internalType": "bytes32",
1501
+ "name": "",
1502
+ "type": "bytes32"
1503
+ }
1504
+ ],
1505
+ "stateMutability": "view",
1506
+ "type": "function"
1507
+ },
1508
+ {
1509
+ "inputs": [
1510
+ {
1511
+ "components": [
1512
+ {
1513
+ "internalType": "uint256",
1514
+ "name": "operationId",
1515
+ "type": "uint256"
1516
+ },
1517
+ {
1518
+ "internalType": "bytes32",
1519
+ "name": "holdId",
1520
+ "type": "bytes32"
1521
+ },
1522
+ {
1523
+ "internalType": "uint256",
1524
+ "name": "amount",
1525
+ "type": "uint256"
1526
+ },
1527
+ {
1528
+ "internalType": "address",
1529
+ "name": "recipient",
1530
+ "type": "address"
1531
+ },
1532
+ {
1533
+ "internalType": "address",
1534
+ "name": "stablecoin",
1535
+ "type": "address"
1536
+ }
1537
+ ],
1538
+ "internalType": "struct IMintIntent.ApprovalParams",
1539
+ "name": "_params",
1540
+ "type": "tuple"
1541
+ },
1542
+ {
1543
+ "internalType": "uint64",
1544
+ "name": "_expiry",
1545
+ "type": "uint64"
1546
+ }
1547
+ ],
1548
+ "name": "publishApproval",
1549
+ "outputs": [],
1550
+ "stateMutability": "nonpayable",
1551
+ "type": "function"
1552
+ },
1553
+ {
1554
+ "inputs": [
1555
+ {
1556
+ "internalType": "bytes32",
1557
+ "name": "role",
1558
+ "type": "bytes32"
1559
+ },
1560
+ {
1561
+ "internalType": "address",
1562
+ "name": "callerConfirmation",
1563
+ "type": "address"
1564
+ }
1565
+ ],
1566
+ "name": "renounceRole",
1567
+ "outputs": [],
1568
+ "stateMutability": "nonpayable",
1569
+ "type": "function"
1570
+ },
1571
+ {
1572
+ "inputs": [
1573
+ {
1574
+ "internalType": "address",
1575
+ "name": "stablecoinContract",
1576
+ "type": "address"
1577
+ }
1578
+ ],
1579
+ "name": "reserveStores",
1580
+ "outputs": [
1581
+ {
1582
+ "internalType": "address",
1583
+ "name": "reserveStore",
1584
+ "type": "address"
1585
+ }
1586
+ ],
1587
+ "stateMutability": "view",
1588
+ "type": "function"
1589
+ },
1590
+ {
1591
+ "inputs": [
1592
+ {
1593
+ "internalType": "bytes32",
1594
+ "name": "_holdId",
1595
+ "type": "bytes32"
1596
+ }
1597
+ ],
1598
+ "name": "revokeApproval",
1599
+ "outputs": [],
1600
+ "stateMutability": "nonpayable",
1601
+ "type": "function"
1602
+ },
1603
+ {
1604
+ "inputs": [
1605
+ {
1606
+ "internalType": "uint256",
1607
+ "name": "_operationId",
1608
+ "type": "uint256"
1609
+ }
1610
+ ],
1611
+ "name": "revokeOperationId",
1612
+ "outputs": [],
1613
+ "stateMutability": "nonpayable",
1614
+ "type": "function"
1615
+ },
1616
+ {
1617
+ "inputs": [
1618
+ {
1619
+ "internalType": "bytes32",
1620
+ "name": "role",
1621
+ "type": "bytes32"
1622
+ },
1623
+ {
1624
+ "internalType": "address",
1625
+ "name": "account",
1626
+ "type": "address"
1627
+ }
1628
+ ],
1629
+ "name": "revokeRole",
1630
+ "outputs": [],
1631
+ "stateMutability": "nonpayable",
1632
+ "type": "function"
1633
+ },
1634
+ {
1635
+ "inputs": [
1636
+ {
1637
+ "internalType": "address",
1638
+ "name": "_registry",
1639
+ "type": "address"
1640
+ }
1641
+ ],
1642
+ "name": "setMintIntentRegistry",
1643
+ "outputs": [],
1644
+ "stateMutability": "nonpayable",
1645
+ "type": "function"
1646
+ },
1647
+ {
1648
+ "inputs": [
1649
+ {
1650
+ "internalType": "enum ITIP20Controller.MintIntentVersion",
1651
+ "name": "_mintIntentVersion",
1652
+ "type": "uint8"
1653
+ }
1654
+ ],
1655
+ "name": "setMintIntentVersion",
1656
+ "outputs": [],
1657
+ "stateMutability": "nonpayable",
1658
+ "type": "function"
1659
+ },
1660
+ {
1661
+ "inputs": [
1662
+ {
1663
+ "internalType": "address",
1664
+ "name": "stablecoinContract",
1665
+ "type": "address"
1666
+ },
1667
+ {
1668
+ "internalType": "address",
1669
+ "name": "minter",
1670
+ "type": "address"
1671
+ },
1672
+ {
1673
+ "internalType": "uint256",
1674
+ "name": "minterAllowance",
1675
+ "type": "uint256"
1676
+ }
1677
+ ],
1678
+ "name": "setMinterAllowance",
1679
+ "outputs": [],
1680
+ "stateMutability": "nonpayable",
1681
+ "type": "function"
1682
+ },
1683
+ {
1684
+ "inputs": [
1685
+ {
1686
+ "internalType": "address",
1687
+ "name": "stablecoinContract",
1688
+ "type": "address"
1689
+ },
1690
+ {
1691
+ "internalType": "address",
1692
+ "name": "reserveStore",
1693
+ "type": "address"
1694
+ }
1695
+ ],
1696
+ "name": "setReserveStore",
1697
+ "outputs": [],
1698
+ "stateMutability": "nonpayable",
1699
+ "type": "function"
1700
+ },
1701
+ {
1702
+ "inputs": [
1703
+ {
1704
+ "internalType": "address",
1705
+ "name": "stablecoinContract",
1706
+ "type": "address"
1707
+ },
1708
+ {
1709
+ "internalType": "bool",
1710
+ "name": "pause",
1711
+ "type": "bool"
1712
+ }
1713
+ ],
1714
+ "name": "setStablecoinPaused",
1715
+ "outputs": [],
1716
+ "stateMutability": "nonpayable",
1717
+ "type": "function"
1718
+ },
1719
+ {
1720
+ "inputs": [
1721
+ {
1722
+ "internalType": "address",
1723
+ "name": "stablecoinContract",
1724
+ "type": "address"
1725
+ },
1726
+ {
1727
+ "internalType": "uint256",
1728
+ "name": "mintTxnLimit",
1729
+ "type": "uint256"
1730
+ }
1731
+ ],
1732
+ "name": "setTxnMintLimit",
1733
+ "outputs": [],
1734
+ "stateMutability": "nonpayable",
1735
+ "type": "function"
1736
+ },
1737
+ {
1738
+ "inputs": [
1739
+ {
1740
+ "internalType": "address",
1741
+ "name": "stablecoinContract",
1742
+ "type": "address"
1743
+ }
1744
+ ],
1745
+ "name": "stablecoinIsPaused",
1746
+ "outputs": [
1747
+ {
1748
+ "internalType": "bool",
1749
+ "name": "isPaused",
1750
+ "type": "bool"
1751
+ }
1752
+ ],
1753
+ "stateMutability": "view",
1754
+ "type": "function"
1755
+ },
1756
+ {
1757
+ "inputs": [
1758
+ {
1759
+ "internalType": "bytes4",
1760
+ "name": "interfaceId",
1761
+ "type": "bytes4"
1762
+ }
1763
+ ],
1764
+ "name": "supportsInterface",
1765
+ "outputs": [
1766
+ {
1767
+ "internalType": "bool",
1768
+ "name": "",
1769
+ "type": "bool"
1770
+ }
1771
+ ],
1772
+ "stateMutability": "view",
1773
+ "type": "function"
1774
+ },
1775
+ {
1776
+ "inputs": [
1777
+ {
1778
+ "internalType": "address",
1779
+ "name": "stablecoinContract",
1780
+ "type": "address"
1781
+ },
1782
+ {
1783
+ "internalType": "uint256",
1784
+ "name": "amount",
1785
+ "type": "uint256"
1786
+ }
1787
+ ],
1788
+ "name": "unwrap",
1789
+ "outputs": [],
1790
+ "stateMutability": "nonpayable",
1791
+ "type": "function"
1792
+ },
1793
+ {
1794
+ "inputs": [
1795
+ {
1796
+ "internalType": "address",
1797
+ "name": "newImplementation",
1798
+ "type": "address"
1799
+ },
1800
+ {
1801
+ "internalType": "bytes",
1802
+ "name": "data",
1803
+ "type": "bytes"
1804
+ }
1805
+ ],
1806
+ "name": "upgradeToAndCall",
1807
+ "outputs": [],
1808
+ "stateMutability": "payable",
1809
+ "type": "function"
1810
+ },
1811
+ {
1812
+ "inputs": [
1813
+ {
1814
+ "internalType": "address",
1815
+ "name": "stablecoinContract",
1816
+ "type": "address"
1817
+ },
1818
+ {
1819
+ "internalType": "address",
1820
+ "name": "to",
1821
+ "type": "address"
1822
+ },
1823
+ {
1824
+ "internalType": "uint256",
1825
+ "name": "amount",
1826
+ "type": "uint256"
1827
+ }
1828
+ ],
1829
+ "name": "wrap",
1830
+ "outputs": [],
1831
+ "stateMutability": "nonpayable",
1832
+ "type": "function"
1833
+ }
1834
+ ] as const satisfies Abi;
1835
+
1836
+ /**
1837
+ * Type-safe ABI for TIP20Controller_json
1838
+ */
1839
+ export type TIP20Controller_jsonAbi = typeof TIP20Controller_jsonAbi;
1840
+
1841
+ /**
1842
+ * Contract instance type for TIP20Controller_json
1843
+ */
1844
+ // Use any for contract type to avoid complex viem type issues
1845
+ // The runtime behavior is type-safe through viem's ABI typing
1846
+ export type TIP20Controller_jsonContract = any;
1847
+
1848
+ /**
1849
+ * TIP20Controller_json Contract Class
1850
+ *
1851
+ * Provides a class-based API similar to TypeChain for interacting with the contract.
1852
+ *
1853
+ * @example
1854
+ * ```typescript
1855
+ * import { createPublicClient, createWalletClient, http } from 'viem';
1856
+ * import { mainnet } from 'viem/chains';
1857
+ * import { TIP20Controller_json } from 'TIP20Controller_json';
1858
+ *
1859
+ * const publicClient = createPublicClient({ chain: mainnet, transport: http() });
1860
+ * const walletClient = createWalletClient({ chain: mainnet, transport: http() });
1861
+ *
1862
+ * const contract = new TIP20Controller_json('0x...', { publicClient, walletClient });
1863
+ *
1864
+ * // Read functions
1865
+ * const result = await contract.balanceOf('0x...');
1866
+ *
1867
+ * // Write functions
1868
+ * const hash = await contract.transfer('0x...', 1000n);
1869
+ *
1870
+ * // Simulate transactions (dry-run)
1871
+ * const simulation = await contract.simulate.transfer('0x...', 1000n);
1872
+ * console.log('Gas estimate:', simulation.request.gas);
1873
+ *
1874
+ * // Watch events
1875
+ * const unwatch = contract.watch.Transfer((event) => {
1876
+ * console.log('Transfer event:', event);
1877
+ * });
1878
+ * ```
1879
+ */
1880
+ export class TIP20Controller_json {
1881
+ private contract: TIP20Controller_jsonContract;
1882
+ private contractAddress: Address;
1883
+ private publicClient: PublicClient;
1884
+
1885
+ constructor(
1886
+ address: Address,
1887
+ clients: {
1888
+ publicClient: PublicClient;
1889
+ walletClient?: WalletClient;
1890
+ }
1891
+ ) {
1892
+ this.contractAddress = address;
1893
+ this.publicClient = clients.publicClient;
1894
+ this.contract = getContract({
1895
+ address,
1896
+ abi: TIP20Controller_jsonAbi,
1897
+ client: {
1898
+ public: clients.publicClient,
1899
+ wallet: clients.walletClient,
1900
+ },
1901
+ });
1902
+ }
1903
+
1904
+ /**
1905
+ * Get the contract address
1906
+ */
1907
+ get address(): Address {
1908
+ return this.contractAddress;
1909
+ }
1910
+
1911
+ /**
1912
+ * Get the underlying viem contract instance
1913
+ */
1914
+ getContract(): TIP20Controller_jsonContract {
1915
+ return this.contract;
1916
+ }
1917
+
1918
+ /**
1919
+ * ABSOLUTE_MAX
1920
+ * view
1921
+ */
1922
+ async ABSOLUTE_MAX(): Promise<bigint> {
1923
+ return this.contract.read.ABSOLUTE_MAX() as Promise<bigint>;
1924
+ }
1925
+
1926
+ /**
1927
+ * BRIDGE_ECOSYSTEM_CONTRACT_ROLE
1928
+ * view
1929
+ */
1930
+ async BRIDGE_ECOSYSTEM_CONTRACT_ROLE(): Promise<`0x${string}`> {
1931
+ return this.contract.read.BRIDGE_ECOSYSTEM_CONTRACT_ROLE() as Promise<`0x${string}`>;
1932
+ }
1933
+
1934
+ /**
1935
+ * BURNER_ROLE
1936
+ * view
1937
+ */
1938
+ async BURNER_ROLE(): Promise<`0x${string}`> {
1939
+ return this.contract.read.BURNER_ROLE() as Promise<`0x${string}`>;
1940
+ }
1941
+
1942
+ /**
1943
+ * DEFAULT_ADMIN_ROLE
1944
+ * view
1945
+ */
1946
+ async DEFAULT_ADMIN_ROLE(): Promise<`0x${string}`> {
1947
+ return this.contract.read.DEFAULT_ADMIN_ROLE() as Promise<`0x${string}`>;
1948
+ }
1949
+
1950
+ /**
1951
+ * MINT_RATE_LIMIT_SETTER_ROLE
1952
+ * view
1953
+ */
1954
+ async MINT_RATE_LIMIT_SETTER_ROLE(): Promise<`0x${string}`> {
1955
+ return this.contract.read.MINT_RATE_LIMIT_SETTER_ROLE() as Promise<`0x${string}`>;
1956
+ }
1957
+
1958
+ /**
1959
+ * PUBLISHER_ROLE
1960
+ * view
1961
+ */
1962
+ async PUBLISHER_ROLE(): Promise<`0x${string}`> {
1963
+ return this.contract.read.PUBLISHER_ROLE() as Promise<`0x${string}`>;
1964
+ }
1965
+
1966
+ /**
1967
+ * RESERVE_LEDGER_TOKEN
1968
+ * view
1969
+ */
1970
+ async RESERVE_LEDGER_TOKEN(): Promise<`0x${string}`> {
1971
+ return this.contract.read.RESERVE_LEDGER_TOKEN() as Promise<`0x${string}`>;
1972
+ }
1973
+
1974
+ /**
1975
+ * STABLECOIN_PAUSER_ROLE
1976
+ * view
1977
+ */
1978
+ async STABLECOIN_PAUSER_ROLE(): Promise<`0x${string}`> {
1979
+ return this.contract.read.STABLECOIN_PAUSER_ROLE() as Promise<`0x${string}`>;
1980
+ }
1981
+
1982
+ /**
1983
+ * UNWRAPPER_ROLE
1984
+ * view
1985
+ */
1986
+ async UNWRAPPER_ROLE(): Promise<`0x${string}`> {
1987
+ return this.contract.read.UNWRAPPER_ROLE() as Promise<`0x${string}`>;
1988
+ }
1989
+
1990
+ /**
1991
+ * UPGRADE_INTERFACE_VERSION
1992
+ * view
1993
+ */
1994
+ async UPGRADE_INTERFACE_VERSION(): Promise<string> {
1995
+ return this.contract.read.UPGRADE_INTERFACE_VERSION() as Promise<string>;
1996
+ }
1997
+
1998
+ /**
1999
+ * getApproval
2000
+ * view
2001
+ */
2002
+ async getApproval(_holdId: `0x${string}`): Promise<Approval> {
2003
+ return this.contract.read.getApproval([_holdId] as const) as Promise<Approval>;
2004
+ }
2005
+
2006
+ /**
2007
+ * getMinterAllowance
2008
+ * view
2009
+ */
2010
+ async getMinterAllowance(stablecoinContract: `0x${string}`, minter: `0x${string}`): Promise<bigint> {
2011
+ return this.contract.read.getMinterAllowance([stablecoinContract, minter] as const) as Promise<bigint>;
2012
+ }
2013
+
2014
+ /**
2015
+ * getReserveStore
2016
+ * view
2017
+ */
2018
+ async getReserveStore(stablecoinContract: `0x${string}`): Promise<`0x${string}`> {
2019
+ return this.contract.read.getReserveStore([stablecoinContract] as const) as Promise<`0x${string}`>;
2020
+ }
2021
+
2022
+ /**
2023
+ * getRoleAdmin
2024
+ * view
2025
+ */
2026
+ async getRoleAdmin(role: `0x${string}`): Promise<`0x${string}`> {
2027
+ return this.contract.read.getRoleAdmin([role] as const) as Promise<`0x${string}`>;
2028
+ }
2029
+
2030
+ /**
2031
+ * getRoleMember
2032
+ * view
2033
+ */
2034
+ async getRoleMember(role: `0x${string}`, index: bigint): Promise<`0x${string}`> {
2035
+ return this.contract.read.getRoleMember([role, index] as const) as Promise<`0x${string}`>;
2036
+ }
2037
+
2038
+ /**
2039
+ * getRoleMemberCount
2040
+ * view
2041
+ */
2042
+ async getRoleMemberCount(role: `0x${string}`): Promise<bigint> {
2043
+ return this.contract.read.getRoleMemberCount([role] as const) as Promise<bigint>;
2044
+ }
2045
+
2046
+ /**
2047
+ * getRoleMembers
2048
+ * view
2049
+ */
2050
+ async getRoleMembers(role: `0x${string}`): Promise<`0x${string}`[]> {
2051
+ return this.contract.read.getRoleMembers([role] as const) as Promise<`0x${string}`[]>;
2052
+ }
2053
+
2054
+ /**
2055
+ * getStablecoinTxnMintLimit
2056
+ * view
2057
+ */
2058
+ async getStablecoinTxnMintLimit(stablecoinContract: `0x${string}`): Promise<bigint> {
2059
+ return this.contract.read.getStablecoinTxnMintLimit([stablecoinContract] as const) as Promise<bigint>;
2060
+ }
2061
+
2062
+ /**
2063
+ * hasRole
2064
+ * view
2065
+ */
2066
+ async hasRole(role: `0x${string}`, account: `0x${string}`): Promise<boolean> {
2067
+ return this.contract.read.hasRole([role, account] as const) as Promise<boolean>;
2068
+ }
2069
+
2070
+ /**
2071
+ * mintIntentRegistry
2072
+ * view
2073
+ */
2074
+ async mintIntentRegistry(): Promise<`0x${string}`> {
2075
+ return this.contract.read.mintIntentRegistry() as Promise<`0x${string}`>;
2076
+ }
2077
+
2078
+ /**
2079
+ * mintIntentVersion
2080
+ * view
2081
+ */
2082
+ async mintIntentVersion(): Promise<bigint> {
2083
+ return this.contract.read.mintIntentVersion() as Promise<bigint>;
2084
+ }
2085
+
2086
+ /**
2087
+ * mintTxnLimits
2088
+ * view
2089
+ */
2090
+ async mintTxnLimits(stablecoinContract: `0x${string}`): Promise<bigint> {
2091
+ return this.contract.read.mintTxnLimits([stablecoinContract] as const) as Promise<bigint>;
2092
+ }
2093
+
2094
+ /**
2095
+ * minterAllowances
2096
+ * view
2097
+ */
2098
+ async minterAllowances(stablecoinContract: `0x${string}`, user: `0x${string}`): Promise<bigint> {
2099
+ return this.contract.read.minterAllowances([stablecoinContract, user] as const) as Promise<bigint>;
2100
+ }
2101
+
2102
+ /**
2103
+ * proxiableUUID
2104
+ * view
2105
+ */
2106
+ async proxiableUUID(): Promise<`0x${string}`> {
2107
+ return this.contract.read.proxiableUUID() as Promise<`0x${string}`>;
2108
+ }
2109
+
2110
+ /**
2111
+ * reserveStores
2112
+ * view
2113
+ */
2114
+ async reserveStores(stablecoinContract: `0x${string}`): Promise<`0x${string}`> {
2115
+ return this.contract.read.reserveStores([stablecoinContract] as const) as Promise<`0x${string}`>;
2116
+ }
2117
+
2118
+ /**
2119
+ * stablecoinIsPaused
2120
+ * view
2121
+ */
2122
+ async stablecoinIsPaused(stablecoinContract: `0x${string}`): Promise<boolean> {
2123
+ return this.contract.read.stablecoinIsPaused([stablecoinContract] as const) as Promise<boolean>;
2124
+ }
2125
+
2126
+ /**
2127
+ * supportsInterface
2128
+ * view
2129
+ */
2130
+ async supportsInterface(interfaceId: `0x${string}`): Promise<boolean> {
2131
+ return this.contract.read.supportsInterface([interfaceId] as const) as Promise<boolean>;
2132
+ }
2133
+
2134
+ /**
2135
+ * burn
2136
+ * nonpayable
2137
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2138
+ */
2139
+ async burn(stablecoinContract: `0x${string}`, amount: bigint, options?: {
2140
+ accessList?: import('viem').AccessList;
2141
+ authorizationList?: import('viem').AuthorizationList;
2142
+ chain?: import('viem').Chain | null;
2143
+ dataSuffix?: `0x${string}`;
2144
+ gas?: bigint;
2145
+ gasPrice?: bigint;
2146
+ maxFeePerGas?: bigint;
2147
+ maxPriorityFeePerGas?: bigint;
2148
+ nonce?: number;
2149
+ value?: bigint;
2150
+ }): Promise<`0x${string}`> {
2151
+ if (!this.contract.write) {
2152
+ throw new Error('Wallet client is required for write operations');
2153
+ }
2154
+ return this.contract.write.burn([stablecoinContract, amount] as const, options) as Promise<`0x${string}`>;
2155
+ }
2156
+
2157
+ /**
2158
+ * burnWithOperationId
2159
+ * nonpayable
2160
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2161
+ */
2162
+ async burnWithOperationId(stablecoinContract: `0x${string}`, amount: bigint, operationId: bigint, options?: {
2163
+ accessList?: import('viem').AccessList;
2164
+ authorizationList?: import('viem').AuthorizationList;
2165
+ chain?: import('viem').Chain | null;
2166
+ dataSuffix?: `0x${string}`;
2167
+ gas?: bigint;
2168
+ gasPrice?: bigint;
2169
+ maxFeePerGas?: bigint;
2170
+ maxPriorityFeePerGas?: bigint;
2171
+ nonce?: number;
2172
+ value?: bigint;
2173
+ }): Promise<`0x${string}`> {
2174
+ if (!this.contract.write) {
2175
+ throw new Error('Wallet client is required for write operations');
2176
+ }
2177
+ return this.contract.write.burnWithOperationId([stablecoinContract, amount, operationId] as const, options) as Promise<`0x${string}`>;
2178
+ }
2179
+
2180
+ /**
2181
+ * extendApproval
2182
+ * nonpayable
2183
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2184
+ */
2185
+ async extendApproval(_holdId: `0x${string}`, _expiry: bigint, options?: {
2186
+ accessList?: import('viem').AccessList;
2187
+ authorizationList?: import('viem').AuthorizationList;
2188
+ chain?: import('viem').Chain | null;
2189
+ dataSuffix?: `0x${string}`;
2190
+ gas?: bigint;
2191
+ gasPrice?: bigint;
2192
+ maxFeePerGas?: bigint;
2193
+ maxPriorityFeePerGas?: bigint;
2194
+ nonce?: number;
2195
+ value?: bigint;
2196
+ }): Promise<`0x${string}`> {
2197
+ if (!this.contract.write) {
2198
+ throw new Error('Wallet client is required for write operations');
2199
+ }
2200
+ return this.contract.write.extendApproval([_holdId, _expiry] as const, options) as Promise<`0x${string}`>;
2201
+ }
2202
+
2203
+ /**
2204
+ * grantRole
2205
+ * nonpayable
2206
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2207
+ */
2208
+ async grantRole(role: `0x${string}`, account: `0x${string}`, options?: {
2209
+ accessList?: import('viem').AccessList;
2210
+ authorizationList?: import('viem').AuthorizationList;
2211
+ chain?: import('viem').Chain | null;
2212
+ dataSuffix?: `0x${string}`;
2213
+ gas?: bigint;
2214
+ gasPrice?: bigint;
2215
+ maxFeePerGas?: bigint;
2216
+ maxPriorityFeePerGas?: bigint;
2217
+ nonce?: number;
2218
+ value?: bigint;
2219
+ }): Promise<`0x${string}`> {
2220
+ if (!this.contract.write) {
2221
+ throw new Error('Wallet client is required for write operations');
2222
+ }
2223
+ return this.contract.write.grantRole([role, account] as const, options) as Promise<`0x${string}`>;
2224
+ }
2225
+
2226
+ /**
2227
+ * initialize
2228
+ * nonpayable
2229
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2230
+ */
2231
+ async initialize(_admin: `0x${string}`, _publisher: `0x${string}`, _registry: `0x${string}`, options?: {
2232
+ accessList?: import('viem').AccessList;
2233
+ authorizationList?: import('viem').AuthorizationList;
2234
+ chain?: import('viem').Chain | null;
2235
+ dataSuffix?: `0x${string}`;
2236
+ gas?: bigint;
2237
+ gasPrice?: bigint;
2238
+ maxFeePerGas?: bigint;
2239
+ maxPriorityFeePerGas?: bigint;
2240
+ nonce?: number;
2241
+ value?: bigint;
2242
+ }): Promise<`0x${string}`> {
2243
+ if (!this.contract.write) {
2244
+ throw new Error('Wallet client is required for write operations');
2245
+ }
2246
+ return this.contract.write.initialize([_admin, _publisher, _registry] as const, options) as Promise<`0x${string}`>;
2247
+ }
2248
+
2249
+ /**
2250
+ * mint
2251
+ * nonpayable
2252
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2253
+ */
2254
+ async mint(stablecoinContract: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
2255
+ accessList?: import('viem').AccessList;
2256
+ authorizationList?: import('viem').AuthorizationList;
2257
+ chain?: import('viem').Chain | null;
2258
+ dataSuffix?: `0x${string}`;
2259
+ gas?: bigint;
2260
+ gasPrice?: bigint;
2261
+ maxFeePerGas?: bigint;
2262
+ maxPriorityFeePerGas?: bigint;
2263
+ nonce?: number;
2264
+ value?: bigint;
2265
+ }): Promise<`0x${string}`> {
2266
+ if (!this.contract.write) {
2267
+ throw new Error('Wallet client is required for write operations');
2268
+ }
2269
+ return this.contract.write.mint([stablecoinContract, to, amount] as const, options) as Promise<`0x${string}`>;
2270
+ }
2271
+
2272
+ /**
2273
+ * mintBridgeEcosystem
2274
+ * nonpayable
2275
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2276
+ */
2277
+ async mintBridgeEcosystem(stablecoinContract: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
2278
+ accessList?: import('viem').AccessList;
2279
+ authorizationList?: import('viem').AuthorizationList;
2280
+ chain?: import('viem').Chain | null;
2281
+ dataSuffix?: `0x${string}`;
2282
+ gas?: bigint;
2283
+ gasPrice?: bigint;
2284
+ maxFeePerGas?: bigint;
2285
+ maxPriorityFeePerGas?: bigint;
2286
+ nonce?: number;
2287
+ value?: bigint;
2288
+ }): Promise<`0x${string}`> {
2289
+ if (!this.contract.write) {
2290
+ throw new Error('Wallet client is required for write operations');
2291
+ }
2292
+ return this.contract.write.mintBridgeEcosystem([stablecoinContract, to, amount] as const, options) as Promise<`0x${string}`>;
2293
+ }
2294
+
2295
+ /**
2296
+ * mintWithApproval
2297
+ * nonpayable
2298
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2299
+ */
2300
+ async mintWithApproval(_params: IMintIntent_ApprovalParams, options?: {
2301
+ accessList?: import('viem').AccessList;
2302
+ authorizationList?: import('viem').AuthorizationList;
2303
+ chain?: import('viem').Chain | null;
2304
+ dataSuffix?: `0x${string}`;
2305
+ gas?: bigint;
2306
+ gasPrice?: bigint;
2307
+ maxFeePerGas?: bigint;
2308
+ maxPriorityFeePerGas?: bigint;
2309
+ nonce?: number;
2310
+ value?: bigint;
2311
+ }): Promise<`0x${string}`> {
2312
+ if (!this.contract.write) {
2313
+ throw new Error('Wallet client is required for write operations');
2314
+ }
2315
+ return this.contract.write.mintWithApproval([_params] as const, options) as Promise<`0x${string}`>;
2316
+ }
2317
+
2318
+ /**
2319
+ * publishApproval
2320
+ * nonpayable
2321
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2322
+ */
2323
+ async publishApproval(_params: IMintIntent_ApprovalParams, _expiry: bigint, options?: {
2324
+ accessList?: import('viem').AccessList;
2325
+ authorizationList?: import('viem').AuthorizationList;
2326
+ chain?: import('viem').Chain | null;
2327
+ dataSuffix?: `0x${string}`;
2328
+ gas?: bigint;
2329
+ gasPrice?: bigint;
2330
+ maxFeePerGas?: bigint;
2331
+ maxPriorityFeePerGas?: bigint;
2332
+ nonce?: number;
2333
+ value?: bigint;
2334
+ }): Promise<`0x${string}`> {
2335
+ if (!this.contract.write) {
2336
+ throw new Error('Wallet client is required for write operations');
2337
+ }
2338
+ return this.contract.write.publishApproval([_params, _expiry] as const, options) as Promise<`0x${string}`>;
2339
+ }
2340
+
2341
+ /**
2342
+ * renounceRole
2343
+ * nonpayable
2344
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2345
+ */
2346
+ async renounceRole(role: `0x${string}`, callerConfirmation: `0x${string}`, options?: {
2347
+ accessList?: import('viem').AccessList;
2348
+ authorizationList?: import('viem').AuthorizationList;
2349
+ chain?: import('viem').Chain | null;
2350
+ dataSuffix?: `0x${string}`;
2351
+ gas?: bigint;
2352
+ gasPrice?: bigint;
2353
+ maxFeePerGas?: bigint;
2354
+ maxPriorityFeePerGas?: bigint;
2355
+ nonce?: number;
2356
+ value?: bigint;
2357
+ }): Promise<`0x${string}`> {
2358
+ if (!this.contract.write) {
2359
+ throw new Error('Wallet client is required for write operations');
2360
+ }
2361
+ return this.contract.write.renounceRole([role, callerConfirmation] as const, options) as Promise<`0x${string}`>;
2362
+ }
2363
+
2364
+ /**
2365
+ * revokeApproval
2366
+ * nonpayable
2367
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2368
+ */
2369
+ async revokeApproval(_holdId: `0x${string}`, options?: {
2370
+ accessList?: import('viem').AccessList;
2371
+ authorizationList?: import('viem').AuthorizationList;
2372
+ chain?: import('viem').Chain | null;
2373
+ dataSuffix?: `0x${string}`;
2374
+ gas?: bigint;
2375
+ gasPrice?: bigint;
2376
+ maxFeePerGas?: bigint;
2377
+ maxPriorityFeePerGas?: bigint;
2378
+ nonce?: number;
2379
+ value?: bigint;
2380
+ }): Promise<`0x${string}`> {
2381
+ if (!this.contract.write) {
2382
+ throw new Error('Wallet client is required for write operations');
2383
+ }
2384
+ return this.contract.write.revokeApproval([_holdId] as const, options) as Promise<`0x${string}`>;
2385
+ }
2386
+
2387
+ /**
2388
+ * revokeOperationId
2389
+ * nonpayable
2390
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2391
+ */
2392
+ async revokeOperationId(_operationId: bigint, options?: {
2393
+ accessList?: import('viem').AccessList;
2394
+ authorizationList?: import('viem').AuthorizationList;
2395
+ chain?: import('viem').Chain | null;
2396
+ dataSuffix?: `0x${string}`;
2397
+ gas?: bigint;
2398
+ gasPrice?: bigint;
2399
+ maxFeePerGas?: bigint;
2400
+ maxPriorityFeePerGas?: bigint;
2401
+ nonce?: number;
2402
+ value?: bigint;
2403
+ }): Promise<`0x${string}`> {
2404
+ if (!this.contract.write) {
2405
+ throw new Error('Wallet client is required for write operations');
2406
+ }
2407
+ return this.contract.write.revokeOperationId([_operationId] as const, options) as Promise<`0x${string}`>;
2408
+ }
2409
+
2410
+ /**
2411
+ * revokeRole
2412
+ * nonpayable
2413
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2414
+ */
2415
+ async revokeRole(role: `0x${string}`, account: `0x${string}`, options?: {
2416
+ accessList?: import('viem').AccessList;
2417
+ authorizationList?: import('viem').AuthorizationList;
2418
+ chain?: import('viem').Chain | null;
2419
+ dataSuffix?: `0x${string}`;
2420
+ gas?: bigint;
2421
+ gasPrice?: bigint;
2422
+ maxFeePerGas?: bigint;
2423
+ maxPriorityFeePerGas?: bigint;
2424
+ nonce?: number;
2425
+ value?: bigint;
2426
+ }): Promise<`0x${string}`> {
2427
+ if (!this.contract.write) {
2428
+ throw new Error('Wallet client is required for write operations');
2429
+ }
2430
+ return this.contract.write.revokeRole([role, account] as const, options) as Promise<`0x${string}`>;
2431
+ }
2432
+
2433
+ /**
2434
+ * setMintIntentRegistry
2435
+ * nonpayable
2436
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2437
+ */
2438
+ async setMintIntentRegistry(_registry: `0x${string}`, options?: {
2439
+ accessList?: import('viem').AccessList;
2440
+ authorizationList?: import('viem').AuthorizationList;
2441
+ chain?: import('viem').Chain | null;
2442
+ dataSuffix?: `0x${string}`;
2443
+ gas?: bigint;
2444
+ gasPrice?: bigint;
2445
+ maxFeePerGas?: bigint;
2446
+ maxPriorityFeePerGas?: bigint;
2447
+ nonce?: number;
2448
+ value?: bigint;
2449
+ }): Promise<`0x${string}`> {
2450
+ if (!this.contract.write) {
2451
+ throw new Error('Wallet client is required for write operations');
2452
+ }
2453
+ return this.contract.write.setMintIntentRegistry([_registry] as const, options) as Promise<`0x${string}`>;
2454
+ }
2455
+
2456
+ /**
2457
+ * setMintIntentVersion
2458
+ * nonpayable
2459
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2460
+ */
2461
+ async setMintIntentVersion(_mintIntentVersion: bigint, options?: {
2462
+ accessList?: import('viem').AccessList;
2463
+ authorizationList?: import('viem').AuthorizationList;
2464
+ chain?: import('viem').Chain | null;
2465
+ dataSuffix?: `0x${string}`;
2466
+ gas?: bigint;
2467
+ gasPrice?: bigint;
2468
+ maxFeePerGas?: bigint;
2469
+ maxPriorityFeePerGas?: bigint;
2470
+ nonce?: number;
2471
+ value?: bigint;
2472
+ }): Promise<`0x${string}`> {
2473
+ if (!this.contract.write) {
2474
+ throw new Error('Wallet client is required for write operations');
2475
+ }
2476
+ return this.contract.write.setMintIntentVersion([_mintIntentVersion] as const, options) as Promise<`0x${string}`>;
2477
+ }
2478
+
2479
+ /**
2480
+ * setMinterAllowance
2481
+ * nonpayable
2482
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2483
+ */
2484
+ async setMinterAllowance(stablecoinContract: `0x${string}`, minter: `0x${string}`, minterAllowance: bigint, options?: {
2485
+ accessList?: import('viem').AccessList;
2486
+ authorizationList?: import('viem').AuthorizationList;
2487
+ chain?: import('viem').Chain | null;
2488
+ dataSuffix?: `0x${string}`;
2489
+ gas?: bigint;
2490
+ gasPrice?: bigint;
2491
+ maxFeePerGas?: bigint;
2492
+ maxPriorityFeePerGas?: bigint;
2493
+ nonce?: number;
2494
+ value?: bigint;
2495
+ }): Promise<`0x${string}`> {
2496
+ if (!this.contract.write) {
2497
+ throw new Error('Wallet client is required for write operations');
2498
+ }
2499
+ return this.contract.write.setMinterAllowance([stablecoinContract, minter, minterAllowance] as const, options) as Promise<`0x${string}`>;
2500
+ }
2501
+
2502
+ /**
2503
+ * setReserveStore
2504
+ * nonpayable
2505
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2506
+ */
2507
+ async setReserveStore(stablecoinContract: `0x${string}`, reserveStore: `0x${string}`, options?: {
2508
+ accessList?: import('viem').AccessList;
2509
+ authorizationList?: import('viem').AuthorizationList;
2510
+ chain?: import('viem').Chain | null;
2511
+ dataSuffix?: `0x${string}`;
2512
+ gas?: bigint;
2513
+ gasPrice?: bigint;
2514
+ maxFeePerGas?: bigint;
2515
+ maxPriorityFeePerGas?: bigint;
2516
+ nonce?: number;
2517
+ value?: bigint;
2518
+ }): Promise<`0x${string}`> {
2519
+ if (!this.contract.write) {
2520
+ throw new Error('Wallet client is required for write operations');
2521
+ }
2522
+ return this.contract.write.setReserveStore([stablecoinContract, reserveStore] as const, options) as Promise<`0x${string}`>;
2523
+ }
2524
+
2525
+ /**
2526
+ * setStablecoinPaused
2527
+ * nonpayable
2528
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2529
+ */
2530
+ async setStablecoinPaused(stablecoinContract: `0x${string}`, pause: boolean, options?: {
2531
+ accessList?: import('viem').AccessList;
2532
+ authorizationList?: import('viem').AuthorizationList;
2533
+ chain?: import('viem').Chain | null;
2534
+ dataSuffix?: `0x${string}`;
2535
+ gas?: bigint;
2536
+ gasPrice?: bigint;
2537
+ maxFeePerGas?: bigint;
2538
+ maxPriorityFeePerGas?: bigint;
2539
+ nonce?: number;
2540
+ value?: bigint;
2541
+ }): Promise<`0x${string}`> {
2542
+ if (!this.contract.write) {
2543
+ throw new Error('Wallet client is required for write operations');
2544
+ }
2545
+ return this.contract.write.setStablecoinPaused([stablecoinContract, pause] as const, options) as Promise<`0x${string}`>;
2546
+ }
2547
+
2548
+ /**
2549
+ * setTxnMintLimit
2550
+ * nonpayable
2551
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2552
+ */
2553
+ async setTxnMintLimit(stablecoinContract: `0x${string}`, mintTxnLimit: bigint, options?: {
2554
+ accessList?: import('viem').AccessList;
2555
+ authorizationList?: import('viem').AuthorizationList;
2556
+ chain?: import('viem').Chain | null;
2557
+ dataSuffix?: `0x${string}`;
2558
+ gas?: bigint;
2559
+ gasPrice?: bigint;
2560
+ maxFeePerGas?: bigint;
2561
+ maxPriorityFeePerGas?: bigint;
2562
+ nonce?: number;
2563
+ value?: bigint;
2564
+ }): Promise<`0x${string}`> {
2565
+ if (!this.contract.write) {
2566
+ throw new Error('Wallet client is required for write operations');
2567
+ }
2568
+ return this.contract.write.setTxnMintLimit([stablecoinContract, mintTxnLimit] as const, options) as Promise<`0x${string}`>;
2569
+ }
2570
+
2571
+ /**
2572
+ * unwrap
2573
+ * nonpayable
2574
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2575
+ */
2576
+ async unwrap(stablecoinContract: `0x${string}`, amount: bigint, options?: {
2577
+ accessList?: import('viem').AccessList;
2578
+ authorizationList?: import('viem').AuthorizationList;
2579
+ chain?: import('viem').Chain | null;
2580
+ dataSuffix?: `0x${string}`;
2581
+ gas?: bigint;
2582
+ gasPrice?: bigint;
2583
+ maxFeePerGas?: bigint;
2584
+ maxPriorityFeePerGas?: bigint;
2585
+ nonce?: number;
2586
+ value?: bigint;
2587
+ }): Promise<`0x${string}`> {
2588
+ if (!this.contract.write) {
2589
+ throw new Error('Wallet client is required for write operations');
2590
+ }
2591
+ return this.contract.write.unwrap([stablecoinContract, amount] as const, options) as Promise<`0x${string}`>;
2592
+ }
2593
+
2594
+ /**
2595
+ * upgradeToAndCall
2596
+ * payable
2597
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2598
+ */
2599
+ async upgradeToAndCall(newImplementation: `0x${string}`, data: `0x${string}`, options?: {
2600
+ accessList?: import('viem').AccessList;
2601
+ authorizationList?: import('viem').AuthorizationList;
2602
+ chain?: import('viem').Chain | null;
2603
+ dataSuffix?: `0x${string}`;
2604
+ gas?: bigint;
2605
+ gasPrice?: bigint;
2606
+ maxFeePerGas?: bigint;
2607
+ maxPriorityFeePerGas?: bigint;
2608
+ nonce?: number;
2609
+ value?: bigint;
2610
+ }): Promise<`0x${string}`> {
2611
+ if (!this.contract.write) {
2612
+ throw new Error('Wallet client is required for write operations');
2613
+ }
2614
+ return this.contract.write.upgradeToAndCall([newImplementation, data] as const, options) as Promise<`0x${string}`>;
2615
+ }
2616
+
2617
+ /**
2618
+ * wrap
2619
+ * nonpayable
2620
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2621
+ */
2622
+ async wrap(stablecoinContract: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
2623
+ accessList?: import('viem').AccessList;
2624
+ authorizationList?: import('viem').AuthorizationList;
2625
+ chain?: import('viem').Chain | null;
2626
+ dataSuffix?: `0x${string}`;
2627
+ gas?: bigint;
2628
+ gasPrice?: bigint;
2629
+ maxFeePerGas?: bigint;
2630
+ maxPriorityFeePerGas?: bigint;
2631
+ nonce?: number;
2632
+ value?: bigint;
2633
+ }): Promise<`0x${string}`> {
2634
+ if (!this.contract.write) {
2635
+ throw new Error('Wallet client is required for write operations');
2636
+ }
2637
+ return this.contract.write.wrap([stablecoinContract, to, amount] as const, options) as Promise<`0x${string}`>;
2638
+ }
2639
+
2640
+
2641
+
2642
+ /**
2643
+ * Simulate contract write operations (dry-run without sending transaction)
2644
+ *
2645
+ * @example
2646
+ * const result = await contract.simulate.transfer('0x...', 1000n);
2647
+ * console.log('Gas estimate:', result.request.gas);
2648
+ * console.log('Would succeed:', result.result);
2649
+ */
2650
+ get simulate() {
2651
+ const contract = this.contract;
2652
+ if (!contract.simulate) {
2653
+ throw new Error('Public client is required for simulation');
2654
+ }
2655
+ return {
2656
+ /**
2657
+ * Simulate burn
2658
+ * Returns gas estimate and result without sending transaction
2659
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2660
+ */
2661
+ async burn(stablecoinContract: `0x${string}`, amount: bigint, options?: {
2662
+ accessList?: import('viem').AccessList;
2663
+ authorizationList?: import('viem').AuthorizationList;
2664
+ chain?: import('viem').Chain | null;
2665
+ dataSuffix?: `0x${string}`;
2666
+ gas?: bigint;
2667
+ gasPrice?: bigint;
2668
+ maxFeePerGas?: bigint;
2669
+ maxPriorityFeePerGas?: bigint;
2670
+ nonce?: number;
2671
+ value?: bigint;
2672
+ }): Promise<void> {
2673
+ return contract.simulate.burn([stablecoinContract, amount] as const, options) as Promise<void>;
2674
+ },
2675
+ /**
2676
+ * Simulate burnWithOperationId
2677
+ * Returns gas estimate and result without sending transaction
2678
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2679
+ */
2680
+ async burnWithOperationId(stablecoinContract: `0x${string}`, amount: bigint, operationId: bigint, options?: {
2681
+ accessList?: import('viem').AccessList;
2682
+ authorizationList?: import('viem').AuthorizationList;
2683
+ chain?: import('viem').Chain | null;
2684
+ dataSuffix?: `0x${string}`;
2685
+ gas?: bigint;
2686
+ gasPrice?: bigint;
2687
+ maxFeePerGas?: bigint;
2688
+ maxPriorityFeePerGas?: bigint;
2689
+ nonce?: number;
2690
+ value?: bigint;
2691
+ }): Promise<void> {
2692
+ return contract.simulate.burnWithOperationId([stablecoinContract, amount, operationId] as const, options) as Promise<void>;
2693
+ },
2694
+ /**
2695
+ * Simulate extendApproval
2696
+ * Returns gas estimate and result without sending transaction
2697
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2698
+ */
2699
+ async extendApproval(_holdId: `0x${string}`, _expiry: bigint, options?: {
2700
+ accessList?: import('viem').AccessList;
2701
+ authorizationList?: import('viem').AuthorizationList;
2702
+ chain?: import('viem').Chain | null;
2703
+ dataSuffix?: `0x${string}`;
2704
+ gas?: bigint;
2705
+ gasPrice?: bigint;
2706
+ maxFeePerGas?: bigint;
2707
+ maxPriorityFeePerGas?: bigint;
2708
+ nonce?: number;
2709
+ value?: bigint;
2710
+ }): Promise<void> {
2711
+ return contract.simulate.extendApproval([_holdId, _expiry] as const, options) as Promise<void>;
2712
+ },
2713
+ /**
2714
+ * Simulate grantRole
2715
+ * Returns gas estimate and result without sending transaction
2716
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2717
+ */
2718
+ async grantRole(role: `0x${string}`, account: `0x${string}`, options?: {
2719
+ accessList?: import('viem').AccessList;
2720
+ authorizationList?: import('viem').AuthorizationList;
2721
+ chain?: import('viem').Chain | null;
2722
+ dataSuffix?: `0x${string}`;
2723
+ gas?: bigint;
2724
+ gasPrice?: bigint;
2725
+ maxFeePerGas?: bigint;
2726
+ maxPriorityFeePerGas?: bigint;
2727
+ nonce?: number;
2728
+ value?: bigint;
2729
+ }): Promise<void> {
2730
+ return contract.simulate.grantRole([role, account] as const, options) as Promise<void>;
2731
+ },
2732
+ /**
2733
+ * Simulate initialize
2734
+ * Returns gas estimate and result without sending transaction
2735
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2736
+ */
2737
+ async initialize(_admin: `0x${string}`, _publisher: `0x${string}`, _registry: `0x${string}`, options?: {
2738
+ accessList?: import('viem').AccessList;
2739
+ authorizationList?: import('viem').AuthorizationList;
2740
+ chain?: import('viem').Chain | null;
2741
+ dataSuffix?: `0x${string}`;
2742
+ gas?: bigint;
2743
+ gasPrice?: bigint;
2744
+ maxFeePerGas?: bigint;
2745
+ maxPriorityFeePerGas?: bigint;
2746
+ nonce?: number;
2747
+ value?: bigint;
2748
+ }): Promise<void> {
2749
+ return contract.simulate.initialize([_admin, _publisher, _registry] as const, options) as Promise<void>;
2750
+ },
2751
+ /**
2752
+ * Simulate mint
2753
+ * Returns gas estimate and result without sending transaction
2754
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2755
+ */
2756
+ async mint(stablecoinContract: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
2757
+ accessList?: import('viem').AccessList;
2758
+ authorizationList?: import('viem').AuthorizationList;
2759
+ chain?: import('viem').Chain | null;
2760
+ dataSuffix?: `0x${string}`;
2761
+ gas?: bigint;
2762
+ gasPrice?: bigint;
2763
+ maxFeePerGas?: bigint;
2764
+ maxPriorityFeePerGas?: bigint;
2765
+ nonce?: number;
2766
+ value?: bigint;
2767
+ }): Promise<void> {
2768
+ return contract.simulate.mint([stablecoinContract, to, amount] as const, options) as Promise<void>;
2769
+ },
2770
+ /**
2771
+ * Simulate mintBridgeEcosystem
2772
+ * Returns gas estimate and result without sending transaction
2773
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2774
+ */
2775
+ async mintBridgeEcosystem(stablecoinContract: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
2776
+ accessList?: import('viem').AccessList;
2777
+ authorizationList?: import('viem').AuthorizationList;
2778
+ chain?: import('viem').Chain | null;
2779
+ dataSuffix?: `0x${string}`;
2780
+ gas?: bigint;
2781
+ gasPrice?: bigint;
2782
+ maxFeePerGas?: bigint;
2783
+ maxPriorityFeePerGas?: bigint;
2784
+ nonce?: number;
2785
+ value?: bigint;
2786
+ }): Promise<void> {
2787
+ return contract.simulate.mintBridgeEcosystem([stablecoinContract, to, amount] as const, options) as Promise<void>;
2788
+ },
2789
+ /**
2790
+ * Simulate mintWithApproval
2791
+ * Returns gas estimate and result without sending transaction
2792
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2793
+ */
2794
+ async mintWithApproval(_params: IMintIntent_ApprovalParams, options?: {
2795
+ accessList?: import('viem').AccessList;
2796
+ authorizationList?: import('viem').AuthorizationList;
2797
+ chain?: import('viem').Chain | null;
2798
+ dataSuffix?: `0x${string}`;
2799
+ gas?: bigint;
2800
+ gasPrice?: bigint;
2801
+ maxFeePerGas?: bigint;
2802
+ maxPriorityFeePerGas?: bigint;
2803
+ nonce?: number;
2804
+ value?: bigint;
2805
+ }): Promise<void> {
2806
+ return contract.simulate.mintWithApproval([_params] as const, options) as Promise<void>;
2807
+ },
2808
+ /**
2809
+ * Simulate publishApproval
2810
+ * Returns gas estimate and result without sending transaction
2811
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2812
+ */
2813
+ async publishApproval(_params: IMintIntent_ApprovalParams, _expiry: bigint, options?: {
2814
+ accessList?: import('viem').AccessList;
2815
+ authorizationList?: import('viem').AuthorizationList;
2816
+ chain?: import('viem').Chain | null;
2817
+ dataSuffix?: `0x${string}`;
2818
+ gas?: bigint;
2819
+ gasPrice?: bigint;
2820
+ maxFeePerGas?: bigint;
2821
+ maxPriorityFeePerGas?: bigint;
2822
+ nonce?: number;
2823
+ value?: bigint;
2824
+ }): Promise<void> {
2825
+ return contract.simulate.publishApproval([_params, _expiry] as const, options) as Promise<void>;
2826
+ },
2827
+ /**
2828
+ * Simulate renounceRole
2829
+ * Returns gas estimate and result without sending transaction
2830
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2831
+ */
2832
+ async renounceRole(role: `0x${string}`, callerConfirmation: `0x${string}`, options?: {
2833
+ accessList?: import('viem').AccessList;
2834
+ authorizationList?: import('viem').AuthorizationList;
2835
+ chain?: import('viem').Chain | null;
2836
+ dataSuffix?: `0x${string}`;
2837
+ gas?: bigint;
2838
+ gasPrice?: bigint;
2839
+ maxFeePerGas?: bigint;
2840
+ maxPriorityFeePerGas?: bigint;
2841
+ nonce?: number;
2842
+ value?: bigint;
2843
+ }): Promise<void> {
2844
+ return contract.simulate.renounceRole([role, callerConfirmation] as const, options) as Promise<void>;
2845
+ },
2846
+ /**
2847
+ * Simulate revokeApproval
2848
+ * Returns gas estimate and result without sending transaction
2849
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2850
+ */
2851
+ async revokeApproval(_holdId: `0x${string}`, options?: {
2852
+ accessList?: import('viem').AccessList;
2853
+ authorizationList?: import('viem').AuthorizationList;
2854
+ chain?: import('viem').Chain | null;
2855
+ dataSuffix?: `0x${string}`;
2856
+ gas?: bigint;
2857
+ gasPrice?: bigint;
2858
+ maxFeePerGas?: bigint;
2859
+ maxPriorityFeePerGas?: bigint;
2860
+ nonce?: number;
2861
+ value?: bigint;
2862
+ }): Promise<void> {
2863
+ return contract.simulate.revokeApproval([_holdId] as const, options) as Promise<void>;
2864
+ },
2865
+ /**
2866
+ * Simulate revokeOperationId
2867
+ * Returns gas estimate and result without sending transaction
2868
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2869
+ */
2870
+ async revokeOperationId(_operationId: bigint, options?: {
2871
+ accessList?: import('viem').AccessList;
2872
+ authorizationList?: import('viem').AuthorizationList;
2873
+ chain?: import('viem').Chain | null;
2874
+ dataSuffix?: `0x${string}`;
2875
+ gas?: bigint;
2876
+ gasPrice?: bigint;
2877
+ maxFeePerGas?: bigint;
2878
+ maxPriorityFeePerGas?: bigint;
2879
+ nonce?: number;
2880
+ value?: bigint;
2881
+ }): Promise<void> {
2882
+ return contract.simulate.revokeOperationId([_operationId] as const, options) as Promise<void>;
2883
+ },
2884
+ /**
2885
+ * Simulate revokeRole
2886
+ * Returns gas estimate and result without sending transaction
2887
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2888
+ */
2889
+ async revokeRole(role: `0x${string}`, account: `0x${string}`, options?: {
2890
+ accessList?: import('viem').AccessList;
2891
+ authorizationList?: import('viem').AuthorizationList;
2892
+ chain?: import('viem').Chain | null;
2893
+ dataSuffix?: `0x${string}`;
2894
+ gas?: bigint;
2895
+ gasPrice?: bigint;
2896
+ maxFeePerGas?: bigint;
2897
+ maxPriorityFeePerGas?: bigint;
2898
+ nonce?: number;
2899
+ value?: bigint;
2900
+ }): Promise<void> {
2901
+ return contract.simulate.revokeRole([role, account] as const, options) as Promise<void>;
2902
+ },
2903
+ /**
2904
+ * Simulate setMintIntentRegistry
2905
+ * Returns gas estimate and result without sending transaction
2906
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2907
+ */
2908
+ async setMintIntentRegistry(_registry: `0x${string}`, options?: {
2909
+ accessList?: import('viem').AccessList;
2910
+ authorizationList?: import('viem').AuthorizationList;
2911
+ chain?: import('viem').Chain | null;
2912
+ dataSuffix?: `0x${string}`;
2913
+ gas?: bigint;
2914
+ gasPrice?: bigint;
2915
+ maxFeePerGas?: bigint;
2916
+ maxPriorityFeePerGas?: bigint;
2917
+ nonce?: number;
2918
+ value?: bigint;
2919
+ }): Promise<void> {
2920
+ return contract.simulate.setMintIntentRegistry([_registry] as const, options) as Promise<void>;
2921
+ },
2922
+ /**
2923
+ * Simulate setMintIntentVersion
2924
+ * Returns gas estimate and result without sending transaction
2925
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2926
+ */
2927
+ async setMintIntentVersion(_mintIntentVersion: bigint, options?: {
2928
+ accessList?: import('viem').AccessList;
2929
+ authorizationList?: import('viem').AuthorizationList;
2930
+ chain?: import('viem').Chain | null;
2931
+ dataSuffix?: `0x${string}`;
2932
+ gas?: bigint;
2933
+ gasPrice?: bigint;
2934
+ maxFeePerGas?: bigint;
2935
+ maxPriorityFeePerGas?: bigint;
2936
+ nonce?: number;
2937
+ value?: bigint;
2938
+ }): Promise<void> {
2939
+ return contract.simulate.setMintIntentVersion([_mintIntentVersion] as const, options) as Promise<void>;
2940
+ },
2941
+ /**
2942
+ * Simulate setMinterAllowance
2943
+ * Returns gas estimate and result without sending transaction
2944
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2945
+ */
2946
+ async setMinterAllowance(stablecoinContract: `0x${string}`, minter: `0x${string}`, minterAllowance: bigint, options?: {
2947
+ accessList?: import('viem').AccessList;
2948
+ authorizationList?: import('viem').AuthorizationList;
2949
+ chain?: import('viem').Chain | null;
2950
+ dataSuffix?: `0x${string}`;
2951
+ gas?: bigint;
2952
+ gasPrice?: bigint;
2953
+ maxFeePerGas?: bigint;
2954
+ maxPriorityFeePerGas?: bigint;
2955
+ nonce?: number;
2956
+ value?: bigint;
2957
+ }): Promise<void> {
2958
+ return contract.simulate.setMinterAllowance([stablecoinContract, minter, minterAllowance] as const, options) as Promise<void>;
2959
+ },
2960
+ /**
2961
+ * Simulate setReserveStore
2962
+ * Returns gas estimate and result without sending transaction
2963
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2964
+ */
2965
+ async setReserveStore(stablecoinContract: `0x${string}`, reserveStore: `0x${string}`, options?: {
2966
+ accessList?: import('viem').AccessList;
2967
+ authorizationList?: import('viem').AuthorizationList;
2968
+ chain?: import('viem').Chain | null;
2969
+ dataSuffix?: `0x${string}`;
2970
+ gas?: bigint;
2971
+ gasPrice?: bigint;
2972
+ maxFeePerGas?: bigint;
2973
+ maxPriorityFeePerGas?: bigint;
2974
+ nonce?: number;
2975
+ value?: bigint;
2976
+ }): Promise<void> {
2977
+ return contract.simulate.setReserveStore([stablecoinContract, reserveStore] as const, options) as Promise<void>;
2978
+ },
2979
+ /**
2980
+ * Simulate setStablecoinPaused
2981
+ * Returns gas estimate and result without sending transaction
2982
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
2983
+ */
2984
+ async setStablecoinPaused(stablecoinContract: `0x${string}`, pause: boolean, options?: {
2985
+ accessList?: import('viem').AccessList;
2986
+ authorizationList?: import('viem').AuthorizationList;
2987
+ chain?: import('viem').Chain | null;
2988
+ dataSuffix?: `0x${string}`;
2989
+ gas?: bigint;
2990
+ gasPrice?: bigint;
2991
+ maxFeePerGas?: bigint;
2992
+ maxPriorityFeePerGas?: bigint;
2993
+ nonce?: number;
2994
+ value?: bigint;
2995
+ }): Promise<void> {
2996
+ return contract.simulate.setStablecoinPaused([stablecoinContract, pause] as const, options) as Promise<void>;
2997
+ },
2998
+ /**
2999
+ * Simulate setTxnMintLimit
3000
+ * Returns gas estimate and result without sending transaction
3001
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
3002
+ */
3003
+ async setTxnMintLimit(stablecoinContract: `0x${string}`, mintTxnLimit: bigint, options?: {
3004
+ accessList?: import('viem').AccessList;
3005
+ authorizationList?: import('viem').AuthorizationList;
3006
+ chain?: import('viem').Chain | null;
3007
+ dataSuffix?: `0x${string}`;
3008
+ gas?: bigint;
3009
+ gasPrice?: bigint;
3010
+ maxFeePerGas?: bigint;
3011
+ maxPriorityFeePerGas?: bigint;
3012
+ nonce?: number;
3013
+ value?: bigint;
3014
+ }): Promise<void> {
3015
+ return contract.simulate.setTxnMintLimit([stablecoinContract, mintTxnLimit] as const, options) as Promise<void>;
3016
+ },
3017
+ /**
3018
+ * Simulate unwrap
3019
+ * Returns gas estimate and result without sending transaction
3020
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
3021
+ */
3022
+ async unwrap(stablecoinContract: `0x${string}`, amount: bigint, options?: {
3023
+ accessList?: import('viem').AccessList;
3024
+ authorizationList?: import('viem').AuthorizationList;
3025
+ chain?: import('viem').Chain | null;
3026
+ dataSuffix?: `0x${string}`;
3027
+ gas?: bigint;
3028
+ gasPrice?: bigint;
3029
+ maxFeePerGas?: bigint;
3030
+ maxPriorityFeePerGas?: bigint;
3031
+ nonce?: number;
3032
+ value?: bigint;
3033
+ }): Promise<void> {
3034
+ return contract.simulate.unwrap([stablecoinContract, amount] as const, options) as Promise<void>;
3035
+ },
3036
+ /**
3037
+ * Simulate upgradeToAndCall
3038
+ * Returns gas estimate and result without sending transaction
3039
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
3040
+ */
3041
+ async upgradeToAndCall(newImplementation: `0x${string}`, data: `0x${string}`, options?: {
3042
+ accessList?: import('viem').AccessList;
3043
+ authorizationList?: import('viem').AuthorizationList;
3044
+ chain?: import('viem').Chain | null;
3045
+ dataSuffix?: `0x${string}`;
3046
+ gas?: bigint;
3047
+ gasPrice?: bigint;
3048
+ maxFeePerGas?: bigint;
3049
+ maxPriorityFeePerGas?: bigint;
3050
+ nonce?: number;
3051
+ value?: bigint;
3052
+ }): Promise<void> {
3053
+ return contract.simulate.upgradeToAndCall([newImplementation, data] as const, options) as Promise<void>;
3054
+ },
3055
+ /**
3056
+ * Simulate wrap
3057
+ * Returns gas estimate and result without sending transaction
3058
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
3059
+ */
3060
+ async wrap(stablecoinContract: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
3061
+ accessList?: import('viem').AccessList;
3062
+ authorizationList?: import('viem').AuthorizationList;
3063
+ chain?: import('viem').Chain | null;
3064
+ dataSuffix?: `0x${string}`;
3065
+ gas?: bigint;
3066
+ gasPrice?: bigint;
3067
+ maxFeePerGas?: bigint;
3068
+ maxPriorityFeePerGas?: bigint;
3069
+ nonce?: number;
3070
+ value?: bigint;
3071
+ }): Promise<void> {
3072
+ return contract.simulate.wrap([stablecoinContract, to, amount] as const, options) as Promise<void>;
3073
+ }
3074
+ };
3075
+ }
3076
+
3077
+ /**
3078
+ * Watch contract events
3079
+ *
3080
+ * @example
3081
+ * // Watch all Transfer events
3082
+ * const unwatch = contract.watch.Transfer((event) => {
3083
+ * console.log('Transfer:', event);
3084
+ * });
3085
+ *
3086
+ * // Stop watching
3087
+ * unwatch();
3088
+ */
3089
+ get watch() {
3090
+ return {
3091
+ /**
3092
+ * Watch ApprovalConsumed events
3093
+ * @param callback Function to call when event is emitted
3094
+ * @param filter Optional filter for indexed parameters
3095
+ * @returns Unwatch function to stop listening
3096
+ */
3097
+ ApprovalConsumed: (callback: (event: { _publisher: `0x${string}`; _operationId: bigint; _holdId: `0x${string}` }) => void, filter?: { _publisher: `0x${string}`; _operationId: bigint; _holdId: `0x${string}` }) => {
3098
+ return this.publicClient.watchContractEvent({
3099
+ address: this.contractAddress,
3100
+ abi: TIP20Controller_jsonAbi,
3101
+ eventName: 'ApprovalConsumed',
3102
+ args: filter,
3103
+ onLogs: (logs: any[]) => {
3104
+ logs.forEach((log: any) => {
3105
+ callback(log.args as any);
3106
+ });
3107
+ },
3108
+ }) as () => void;
3109
+ },
3110
+ /**
3111
+ * Watch ApprovalExtended events
3112
+ * @param callback Function to call when event is emitted
3113
+ * @param filter Optional filter for indexed parameters
3114
+ * @returns Unwatch function to stop listening
3115
+ */
3116
+ ApprovalExtended: (callback: (event: { _publisher: `0x${string}`; _holdId: `0x${string}`; _operationId: bigint; _newExpiry: bigint }) => void, filter?: { _publisher: `0x${string}`; _holdId: `0x${string}`; _operationId: bigint }) => {
3117
+ return this.publicClient.watchContractEvent({
3118
+ address: this.contractAddress,
3119
+ abi: TIP20Controller_jsonAbi,
3120
+ eventName: 'ApprovalExtended',
3121
+ args: filter,
3122
+ onLogs: (logs: any[]) => {
3123
+ logs.forEach((log: any) => {
3124
+ callback(log.args as any);
3125
+ });
3126
+ },
3127
+ }) as () => void;
3128
+ },
3129
+ /**
3130
+ * Watch ApprovalPublished events
3131
+ * @param callback Function to call when event is emitted
3132
+ * @param filter Optional filter for indexed parameters
3133
+ * @returns Unwatch function to stop listening
3134
+ */
3135
+ ApprovalPublished: (callback: (event: { _publisher: `0x${string}`; _operationId: bigint; _holdId: `0x${string}`; _stablecoin: `0x${string}`; _recipient: `0x${string}`; _amount: bigint; _expiry: bigint }) => void, filter?: { _publisher: `0x${string}`; _operationId: bigint; _holdId: `0x${string}` }) => {
3136
+ return this.publicClient.watchContractEvent({
3137
+ address: this.contractAddress,
3138
+ abi: TIP20Controller_jsonAbi,
3139
+ eventName: 'ApprovalPublished',
3140
+ args: filter,
3141
+ onLogs: (logs: any[]) => {
3142
+ logs.forEach((log: any) => {
3143
+ callback(log.args as any);
3144
+ });
3145
+ },
3146
+ }) as () => void;
3147
+ },
3148
+ /**
3149
+ * Watch ApprovalRevoked events
3150
+ * @param callback Function to call when event is emitted
3151
+ * @param filter Optional filter for indexed parameters
3152
+ * @returns Unwatch function to stop listening
3153
+ */
3154
+ ApprovalRevoked: (callback: (event: { _publisher: `0x${string}`; _holdId: `0x${string}`; _operationId: bigint }) => void, filter?: { _publisher: `0x${string}`; _holdId: `0x${string}`; _operationId: bigint }) => {
3155
+ return this.publicClient.watchContractEvent({
3156
+ address: this.contractAddress,
3157
+ abi: TIP20Controller_jsonAbi,
3158
+ eventName: 'ApprovalRevoked',
3159
+ args: filter,
3160
+ onLogs: (logs: any[]) => {
3161
+ logs.forEach((log: any) => {
3162
+ callback(log.args as any);
3163
+ });
3164
+ },
3165
+ }) as () => void;
3166
+ },
3167
+ /**
3168
+ * Watch Burn events
3169
+ * @param callback Function to call when event is emitted
3170
+ * @param filter Optional filter for indexed parameters
3171
+ * @returns Unwatch function to stop listening
3172
+ */
3173
+ Burn: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; amount: bigint }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}` }) => {
3174
+ return this.publicClient.watchContractEvent({
3175
+ address: this.contractAddress,
3176
+ abi: TIP20Controller_jsonAbi,
3177
+ eventName: 'Burn',
3178
+ args: filter,
3179
+ onLogs: (logs: any[]) => {
3180
+ logs.forEach((log: any) => {
3181
+ callback(log.args as any);
3182
+ });
3183
+ },
3184
+ }) as () => void;
3185
+ },
3186
+ /**
3187
+ * Watch Initialized events
3188
+ * @param callback Function to call when event is emitted
3189
+ * @param filter Optional filter for indexed parameters
3190
+ * @returns Unwatch function to stop listening
3191
+ */
3192
+ Initialized: (callback: (event: { version: bigint }) => void) => {
3193
+ return this.publicClient.watchContractEvent({
3194
+ address: this.contractAddress,
3195
+ abi: TIP20Controller_jsonAbi,
3196
+ eventName: 'Initialized',
3197
+
3198
+ onLogs: (logs: any[]) => {
3199
+ logs.forEach((log: any) => {
3200
+ callback(log.args as any);
3201
+ });
3202
+ },
3203
+ }) as () => void;
3204
+ },
3205
+ /**
3206
+ * Watch Mint events
3207
+ * @param callback Function to call when event is emitted
3208
+ * @param filter Optional filter for indexed parameters
3209
+ * @returns Unwatch function to stop listening
3210
+ */
3211
+ Mint: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; to: `0x${string}`; amount: bigint }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}`; to: `0x${string}` }) => {
3212
+ return this.publicClient.watchContractEvent({
3213
+ address: this.contractAddress,
3214
+ abi: TIP20Controller_jsonAbi,
3215
+ eventName: 'Mint',
3216
+ args: filter,
3217
+ onLogs: (logs: any[]) => {
3218
+ logs.forEach((log: any) => {
3219
+ callback(log.args as any);
3220
+ });
3221
+ },
3222
+ }) as () => void;
3223
+ },
3224
+ /**
3225
+ * Watch MintIntentRegistrySet events
3226
+ * @param callback Function to call when event is emitted
3227
+ * @param filter Optional filter for indexed parameters
3228
+ * @returns Unwatch function to stop listening
3229
+ */
3230
+ MintIntentRegistrySet: (callback: (event: { _admin: `0x${string}`; _oldRegistry: `0x${string}`; _newRegistry: `0x${string}` }) => void, filter?: { _admin: `0x${string}`; _oldRegistry: `0x${string}`; _newRegistry: `0x${string}` }) => {
3231
+ return this.publicClient.watchContractEvent({
3232
+ address: this.contractAddress,
3233
+ abi: TIP20Controller_jsonAbi,
3234
+ eventName: 'MintIntentRegistrySet',
3235
+ args: filter,
3236
+ onLogs: (logs: any[]) => {
3237
+ logs.forEach((log: any) => {
3238
+ callback(log.args as any);
3239
+ });
3240
+ },
3241
+ }) as () => void;
3242
+ },
3243
+ /**
3244
+ * Watch MintIntentVersionSet events
3245
+ * @param callback Function to call when event is emitted
3246
+ * @param filter Optional filter for indexed parameters
3247
+ * @returns Unwatch function to stop listening
3248
+ */
3249
+ MintIntentVersionSet: (callback: (event: { sender: `0x${string}`; mintIntentVersion: bigint }) => void, filter?: { sender: `0x${string}` }) => {
3250
+ return this.publicClient.watchContractEvent({
3251
+ address: this.contractAddress,
3252
+ abi: TIP20Controller_jsonAbi,
3253
+ eventName: 'MintIntentVersionSet',
3254
+ args: filter,
3255
+ onLogs: (logs: any[]) => {
3256
+ logs.forEach((log: any) => {
3257
+ callback(log.args as any);
3258
+ });
3259
+ },
3260
+ }) as () => void;
3261
+ },
3262
+ /**
3263
+ * Watch MinterAllowanceSet events
3264
+ * @param callback Function to call when event is emitted
3265
+ * @param filter Optional filter for indexed parameters
3266
+ * @returns Unwatch function to stop listening
3267
+ */
3268
+ MinterAllowanceSet: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; minter: `0x${string}`; minterAllowance: bigint }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}`; minter: `0x${string}` }) => {
3269
+ return this.publicClient.watchContractEvent({
3270
+ address: this.contractAddress,
3271
+ abi: TIP20Controller_jsonAbi,
3272
+ eventName: 'MinterAllowanceSet',
3273
+ args: filter,
3274
+ onLogs: (logs: any[]) => {
3275
+ logs.forEach((log: any) => {
3276
+ callback(log.args as any);
3277
+ });
3278
+ },
3279
+ }) as () => void;
3280
+ },
3281
+ /**
3282
+ * Watch OperationIdRevoked events
3283
+ * @param callback Function to call when event is emitted
3284
+ * @param filter Optional filter for indexed parameters
3285
+ * @returns Unwatch function to stop listening
3286
+ */
3287
+ OperationIdRevoked: (callback: (event: { _publisher: `0x${string}`; _operationId: bigint; _holdId: `0x${string}` }) => void, filter?: { _publisher: `0x${string}`; _operationId: bigint; _holdId: `0x${string}` }) => {
3288
+ return this.publicClient.watchContractEvent({
3289
+ address: this.contractAddress,
3290
+ abi: TIP20Controller_jsonAbi,
3291
+ eventName: 'OperationIdRevoked',
3292
+ args: filter,
3293
+ onLogs: (logs: any[]) => {
3294
+ logs.forEach((log: any) => {
3295
+ callback(log.args as any);
3296
+ });
3297
+ },
3298
+ }) as () => void;
3299
+ },
3300
+ /**
3301
+ * Watch ReserveStoreSet events
3302
+ * @param callback Function to call when event is emitted
3303
+ * @param filter Optional filter for indexed parameters
3304
+ * @returns Unwatch function to stop listening
3305
+ */
3306
+ ReserveStoreSet: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; reserveStore: `0x${string}` }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}`; reserveStore: `0x${string}` }) => {
3307
+ return this.publicClient.watchContractEvent({
3308
+ address: this.contractAddress,
3309
+ abi: TIP20Controller_jsonAbi,
3310
+ eventName: 'ReserveStoreSet',
3311
+ args: filter,
3312
+ onLogs: (logs: any[]) => {
3313
+ logs.forEach((log: any) => {
3314
+ callback(log.args as any);
3315
+ });
3316
+ },
3317
+ }) as () => void;
3318
+ },
3319
+ /**
3320
+ * Watch RoleAdminChanged events
3321
+ * @param callback Function to call when event is emitted
3322
+ * @param filter Optional filter for indexed parameters
3323
+ * @returns Unwatch function to stop listening
3324
+ */
3325
+ RoleAdminChanged: (callback: (event: { role: `0x${string}`; previousAdminRole: `0x${string}`; newAdminRole: `0x${string}` }) => void, filter?: { role: `0x${string}`; previousAdminRole: `0x${string}`; newAdminRole: `0x${string}` }) => {
3326
+ return this.publicClient.watchContractEvent({
3327
+ address: this.contractAddress,
3328
+ abi: TIP20Controller_jsonAbi,
3329
+ eventName: 'RoleAdminChanged',
3330
+ args: filter,
3331
+ onLogs: (logs: any[]) => {
3332
+ logs.forEach((log: any) => {
3333
+ callback(log.args as any);
3334
+ });
3335
+ },
3336
+ }) as () => void;
3337
+ },
3338
+ /**
3339
+ * Watch RoleGranted events
3340
+ * @param callback Function to call when event is emitted
3341
+ * @param filter Optional filter for indexed parameters
3342
+ * @returns Unwatch function to stop listening
3343
+ */
3344
+ RoleGranted: (callback: (event: { role: `0x${string}`; account: `0x${string}`; sender: `0x${string}` }) => void, filter?: { role: `0x${string}`; account: `0x${string}`; sender: `0x${string}` }) => {
3345
+ return this.publicClient.watchContractEvent({
3346
+ address: this.contractAddress,
3347
+ abi: TIP20Controller_jsonAbi,
3348
+ eventName: 'RoleGranted',
3349
+ args: filter,
3350
+ onLogs: (logs: any[]) => {
3351
+ logs.forEach((log: any) => {
3352
+ callback(log.args as any);
3353
+ });
3354
+ },
3355
+ }) as () => void;
3356
+ },
3357
+ /**
3358
+ * Watch RoleRevoked events
3359
+ * @param callback Function to call when event is emitted
3360
+ * @param filter Optional filter for indexed parameters
3361
+ * @returns Unwatch function to stop listening
3362
+ */
3363
+ RoleRevoked: (callback: (event: { role: `0x${string}`; account: `0x${string}`; sender: `0x${string}` }) => void, filter?: { role: `0x${string}`; account: `0x${string}`; sender: `0x${string}` }) => {
3364
+ return this.publicClient.watchContractEvent({
3365
+ address: this.contractAddress,
3366
+ abi: TIP20Controller_jsonAbi,
3367
+ eventName: 'RoleRevoked',
3368
+ args: filter,
3369
+ onLogs: (logs: any[]) => {
3370
+ logs.forEach((log: any) => {
3371
+ callback(log.args as any);
3372
+ });
3373
+ },
3374
+ }) as () => void;
3375
+ },
3376
+ /**
3377
+ * Watch StablecoinPauseSet events
3378
+ * @param callback Function to call when event is emitted
3379
+ * @param filter Optional filter for indexed parameters
3380
+ * @returns Unwatch function to stop listening
3381
+ */
3382
+ StablecoinPauseSet: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; isPaused: boolean }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}` }) => {
3383
+ return this.publicClient.watchContractEvent({
3384
+ address: this.contractAddress,
3385
+ abi: TIP20Controller_jsonAbi,
3386
+ eventName: 'StablecoinPauseSet',
3387
+ args: filter,
3388
+ onLogs: (logs: any[]) => {
3389
+ logs.forEach((log: any) => {
3390
+ callback(log.args as any);
3391
+ });
3392
+ },
3393
+ }) as () => void;
3394
+ },
3395
+ /**
3396
+ * Watch TxnMintLimitSet events
3397
+ * @param callback Function to call when event is emitted
3398
+ * @param filter Optional filter for indexed parameters
3399
+ * @returns Unwatch function to stop listening
3400
+ */
3401
+ TxnMintLimitSet: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; mintTxnLimit: bigint }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}` }) => {
3402
+ return this.publicClient.watchContractEvent({
3403
+ address: this.contractAddress,
3404
+ abi: TIP20Controller_jsonAbi,
3405
+ eventName: 'TxnMintLimitSet',
3406
+ args: filter,
3407
+ onLogs: (logs: any[]) => {
3408
+ logs.forEach((log: any) => {
3409
+ callback(log.args as any);
3410
+ });
3411
+ },
3412
+ }) as () => void;
3413
+ },
3414
+ /**
3415
+ * Watch Unwrap events
3416
+ * @param callback Function to call when event is emitted
3417
+ * @param filter Optional filter for indexed parameters
3418
+ * @returns Unwatch function to stop listening
3419
+ */
3420
+ Unwrap: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; amount: bigint }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}` }) => {
3421
+ return this.publicClient.watchContractEvent({
3422
+ address: this.contractAddress,
3423
+ abi: TIP20Controller_jsonAbi,
3424
+ eventName: 'Unwrap',
3425
+ args: filter,
3426
+ onLogs: (logs: any[]) => {
3427
+ logs.forEach((log: any) => {
3428
+ callback(log.args as any);
3429
+ });
3430
+ },
3431
+ }) as () => void;
3432
+ },
3433
+ /**
3434
+ * Watch Upgraded events
3435
+ * @param callback Function to call when event is emitted
3436
+ * @param filter Optional filter for indexed parameters
3437
+ * @returns Unwatch function to stop listening
3438
+ */
3439
+ Upgraded: (callback: (event: { implementation: `0x${string}` }) => void, filter?: { implementation: `0x${string}` }) => {
3440
+ return this.publicClient.watchContractEvent({
3441
+ address: this.contractAddress,
3442
+ abi: TIP20Controller_jsonAbi,
3443
+ eventName: 'Upgraded',
3444
+ args: filter,
3445
+ onLogs: (logs: any[]) => {
3446
+ logs.forEach((log: any) => {
3447
+ callback(log.args as any);
3448
+ });
3449
+ },
3450
+ }) as () => void;
3451
+ },
3452
+ /**
3453
+ * Watch Wrap events
3454
+ * @param callback Function to call when event is emitted
3455
+ * @param filter Optional filter for indexed parameters
3456
+ * @returns Unwatch function to stop listening
3457
+ */
3458
+ Wrap: (callback: (event: { sender: `0x${string}`; stablecoinContract: `0x${string}`; to: `0x${string}`; amount: bigint }) => void, filter?: { sender: `0x${string}`; stablecoinContract: `0x${string}`; to: `0x${string}` }) => {
3459
+ return this.publicClient.watchContractEvent({
3460
+ address: this.contractAddress,
3461
+ abi: TIP20Controller_jsonAbi,
3462
+ eventName: 'Wrap',
3463
+ args: filter,
3464
+ onLogs: (logs: any[]) => {
3465
+ logs.forEach((log: any) => {
3466
+ callback(log.args as any);
3467
+ });
3468
+ },
3469
+ }) as () => void;
3470
+ }
3471
+ };
3472
+ }
3473
+ }