@gitmyabi-stg/merl 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,884 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MintableERC20 = exports.MintableERC20Abi = void 0;
4
+ const viem_1 = require("viem");
5
+ /**
6
+ * MintableERC20 ABI
7
+ *
8
+ * This ABI is typed using viem's type system for full type safety.
9
+ */
10
+ exports.MintableERC20Abi = [
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "minter_",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "vault_",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "string",
25
+ "name": "name",
26
+ "type": "string"
27
+ },
28
+ {
29
+ "internalType": "string",
30
+ "name": "symbol",
31
+ "type": "string"
32
+ },
33
+ {
34
+ "internalType": "uint8",
35
+ "name": "decimals_",
36
+ "type": "uint8"
37
+ }
38
+ ],
39
+ "stateMutability": "nonpayable",
40
+ "type": "constructor"
41
+ },
42
+ {
43
+ "inputs": [
44
+ {
45
+ "internalType": "address",
46
+ "name": "spender",
47
+ "type": "address"
48
+ },
49
+ {
50
+ "internalType": "uint256",
51
+ "name": "allowance",
52
+ "type": "uint256"
53
+ },
54
+ {
55
+ "internalType": "uint256",
56
+ "name": "needed",
57
+ "type": "uint256"
58
+ }
59
+ ],
60
+ "name": "ERC20InsufficientAllowance",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [
65
+ {
66
+ "internalType": "address",
67
+ "name": "sender",
68
+ "type": "address"
69
+ },
70
+ {
71
+ "internalType": "uint256",
72
+ "name": "balance",
73
+ "type": "uint256"
74
+ },
75
+ {
76
+ "internalType": "uint256",
77
+ "name": "needed",
78
+ "type": "uint256"
79
+ }
80
+ ],
81
+ "name": "ERC20InsufficientBalance",
82
+ "type": "error"
83
+ },
84
+ {
85
+ "inputs": [
86
+ {
87
+ "internalType": "address",
88
+ "name": "approver",
89
+ "type": "address"
90
+ }
91
+ ],
92
+ "name": "ERC20InvalidApprover",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [
97
+ {
98
+ "internalType": "address",
99
+ "name": "receiver",
100
+ "type": "address"
101
+ }
102
+ ],
103
+ "name": "ERC20InvalidReceiver",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "address",
110
+ "name": "sender",
111
+ "type": "address"
112
+ }
113
+ ],
114
+ "name": "ERC20InvalidSender",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [
119
+ {
120
+ "internalType": "address",
121
+ "name": "spender",
122
+ "type": "address"
123
+ }
124
+ ],
125
+ "name": "ERC20InvalidSpender",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "anonymous": false,
130
+ "inputs": [
131
+ {
132
+ "indexed": true,
133
+ "internalType": "address",
134
+ "name": "owner",
135
+ "type": "address"
136
+ },
137
+ {
138
+ "indexed": true,
139
+ "internalType": "address",
140
+ "name": "spender",
141
+ "type": "address"
142
+ },
143
+ {
144
+ "indexed": false,
145
+ "internalType": "uint256",
146
+ "name": "value",
147
+ "type": "uint256"
148
+ }
149
+ ],
150
+ "name": "Approval",
151
+ "type": "event"
152
+ },
153
+ {
154
+ "anonymous": false,
155
+ "inputs": [
156
+ {
157
+ "indexed": true,
158
+ "internalType": "address",
159
+ "name": "prevMinter",
160
+ "type": "address"
161
+ },
162
+ {
163
+ "indexed": true,
164
+ "internalType": "address",
165
+ "name": "newMinter",
166
+ "type": "address"
167
+ }
168
+ ],
169
+ "name": "MinterTransferred",
170
+ "type": "event"
171
+ },
172
+ {
173
+ "anonymous": false,
174
+ "inputs": [
175
+ {
176
+ "indexed": true,
177
+ "internalType": "address",
178
+ "name": "from",
179
+ "type": "address"
180
+ },
181
+ {
182
+ "indexed": true,
183
+ "internalType": "address",
184
+ "name": "to",
185
+ "type": "address"
186
+ },
187
+ {
188
+ "indexed": false,
189
+ "internalType": "uint256",
190
+ "name": "value",
191
+ "type": "uint256"
192
+ }
193
+ ],
194
+ "name": "Transfer",
195
+ "type": "event"
196
+ },
197
+ {
198
+ "anonymous": false,
199
+ "inputs": [
200
+ {
201
+ "indexed": true,
202
+ "internalType": "address",
203
+ "name": "prevVault",
204
+ "type": "address"
205
+ },
206
+ {
207
+ "indexed": true,
208
+ "internalType": "address",
209
+ "name": "newVault",
210
+ "type": "address"
211
+ }
212
+ ],
213
+ "name": "VaultTransferred",
214
+ "type": "event"
215
+ },
216
+ {
217
+ "inputs": [
218
+ {
219
+ "internalType": "address",
220
+ "name": "owner",
221
+ "type": "address"
222
+ },
223
+ {
224
+ "internalType": "address",
225
+ "name": "spender",
226
+ "type": "address"
227
+ }
228
+ ],
229
+ "name": "allowance",
230
+ "outputs": [
231
+ {
232
+ "internalType": "uint256",
233
+ "name": "",
234
+ "type": "uint256"
235
+ }
236
+ ],
237
+ "stateMutability": "view",
238
+ "type": "function"
239
+ },
240
+ {
241
+ "inputs": [
242
+ {
243
+ "internalType": "address",
244
+ "name": "spender",
245
+ "type": "address"
246
+ },
247
+ {
248
+ "internalType": "uint256",
249
+ "name": "value",
250
+ "type": "uint256"
251
+ }
252
+ ],
253
+ "name": "approve",
254
+ "outputs": [
255
+ {
256
+ "internalType": "bool",
257
+ "name": "",
258
+ "type": "bool"
259
+ }
260
+ ],
261
+ "stateMutability": "nonpayable",
262
+ "type": "function"
263
+ },
264
+ {
265
+ "inputs": [
266
+ {
267
+ "internalType": "address",
268
+ "name": "account",
269
+ "type": "address"
270
+ }
271
+ ],
272
+ "name": "balanceOf",
273
+ "outputs": [
274
+ {
275
+ "internalType": "uint256",
276
+ "name": "",
277
+ "type": "uint256"
278
+ }
279
+ ],
280
+ "stateMutability": "view",
281
+ "type": "function"
282
+ },
283
+ {
284
+ "inputs": [
285
+ {
286
+ "internalType": "address",
287
+ "name": "account",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "amount",
293
+ "type": "uint256"
294
+ }
295
+ ],
296
+ "name": "burn",
297
+ "outputs": [],
298
+ "stateMutability": "nonpayable",
299
+ "type": "function"
300
+ },
301
+ {
302
+ "inputs": [],
303
+ "name": "decimals",
304
+ "outputs": [
305
+ {
306
+ "internalType": "uint8",
307
+ "name": "",
308
+ "type": "uint8"
309
+ }
310
+ ],
311
+ "stateMutability": "view",
312
+ "type": "function"
313
+ },
314
+ {
315
+ "inputs": [
316
+ {
317
+ "internalType": "address",
318
+ "name": "account",
319
+ "type": "address"
320
+ },
321
+ {
322
+ "internalType": "uint256",
323
+ "name": "amount",
324
+ "type": "uint256"
325
+ }
326
+ ],
327
+ "name": "mint",
328
+ "outputs": [],
329
+ "stateMutability": "nonpayable",
330
+ "type": "function"
331
+ },
332
+ {
333
+ "inputs": [],
334
+ "name": "mintQuota",
335
+ "outputs": [
336
+ {
337
+ "internalType": "uint256",
338
+ "name": "",
339
+ "type": "uint256"
340
+ }
341
+ ],
342
+ "stateMutability": "view",
343
+ "type": "function"
344
+ },
345
+ {
346
+ "inputs": [],
347
+ "name": "minter",
348
+ "outputs": [
349
+ {
350
+ "internalType": "address",
351
+ "name": "",
352
+ "type": "address"
353
+ }
354
+ ],
355
+ "stateMutability": "view",
356
+ "type": "function"
357
+ },
358
+ {
359
+ "inputs": [],
360
+ "name": "name",
361
+ "outputs": [
362
+ {
363
+ "internalType": "string",
364
+ "name": "",
365
+ "type": "string"
366
+ }
367
+ ],
368
+ "stateMutability": "view",
369
+ "type": "function"
370
+ },
371
+ {
372
+ "inputs": [],
373
+ "name": "symbol",
374
+ "outputs": [
375
+ {
376
+ "internalType": "string",
377
+ "name": "",
378
+ "type": "string"
379
+ }
380
+ ],
381
+ "stateMutability": "view",
382
+ "type": "function"
383
+ },
384
+ {
385
+ "inputs": [],
386
+ "name": "totalSupply",
387
+ "outputs": [
388
+ {
389
+ "internalType": "uint256",
390
+ "name": "",
391
+ "type": "uint256"
392
+ }
393
+ ],
394
+ "stateMutability": "view",
395
+ "type": "function"
396
+ },
397
+ {
398
+ "inputs": [
399
+ {
400
+ "internalType": "address",
401
+ "name": "to",
402
+ "type": "address"
403
+ },
404
+ {
405
+ "internalType": "uint256",
406
+ "name": "value",
407
+ "type": "uint256"
408
+ }
409
+ ],
410
+ "name": "transfer",
411
+ "outputs": [
412
+ {
413
+ "internalType": "bool",
414
+ "name": "",
415
+ "type": "bool"
416
+ }
417
+ ],
418
+ "stateMutability": "nonpayable",
419
+ "type": "function"
420
+ },
421
+ {
422
+ "inputs": [
423
+ {
424
+ "internalType": "address",
425
+ "name": "from",
426
+ "type": "address"
427
+ },
428
+ {
429
+ "internalType": "address",
430
+ "name": "to",
431
+ "type": "address"
432
+ },
433
+ {
434
+ "internalType": "uint256",
435
+ "name": "value",
436
+ "type": "uint256"
437
+ }
438
+ ],
439
+ "name": "transferFrom",
440
+ "outputs": [
441
+ {
442
+ "internalType": "bool",
443
+ "name": "",
444
+ "type": "bool"
445
+ }
446
+ ],
447
+ "stateMutability": "nonpayable",
448
+ "type": "function"
449
+ },
450
+ {
451
+ "inputs": [
452
+ {
453
+ "internalType": "address",
454
+ "name": "newMinter",
455
+ "type": "address"
456
+ }
457
+ ],
458
+ "name": "transferMinter",
459
+ "outputs": [],
460
+ "stateMutability": "nonpayable",
461
+ "type": "function"
462
+ },
463
+ {
464
+ "inputs": [
465
+ {
466
+ "internalType": "address",
467
+ "name": "newVault",
468
+ "type": "address"
469
+ }
470
+ ],
471
+ "name": "transferVault",
472
+ "outputs": [],
473
+ "stateMutability": "nonpayable",
474
+ "type": "function"
475
+ },
476
+ {
477
+ "inputs": [
478
+ {
479
+ "internalType": "uint256",
480
+ "name": "delta",
481
+ "type": "uint256"
482
+ }
483
+ ],
484
+ "name": "updateMintQuota",
485
+ "outputs": [],
486
+ "stateMutability": "nonpayable",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [],
491
+ "name": "vault",
492
+ "outputs": [
493
+ {
494
+ "internalType": "address",
495
+ "name": "",
496
+ "type": "address"
497
+ }
498
+ ],
499
+ "stateMutability": "view",
500
+ "type": "function"
501
+ }
502
+ ];
503
+ /**
504
+ * MintableERC20 Contract Class
505
+ *
506
+ * Provides a class-based API similar to TypeChain for interacting with the contract.
507
+ *
508
+ * @example
509
+ * ```typescript
510
+ * import { createPublicClient, createWalletClient, http } from 'viem';
511
+ * import { mainnet } from 'viem/chains';
512
+ * import { MintableERC20 } from 'MintableERC20';
513
+ *
514
+ * const publicClient = createPublicClient({ chain: mainnet, transport: http() });
515
+ * const walletClient = createWalletClient({ chain: mainnet, transport: http() });
516
+ *
517
+ * const contract = new MintableERC20('0x...', { publicClient, walletClient });
518
+ *
519
+ * // Read functions
520
+ * const result = await contract.balanceOf('0x...');
521
+ *
522
+ * // Write functions
523
+ * const hash = await contract.transfer('0x...', 1000n);
524
+ *
525
+ * // Simulate transactions (dry-run)
526
+ * const simulation = await contract.simulate.transfer('0x...', 1000n);
527
+ * console.log('Gas estimate:', simulation.request.gas);
528
+ *
529
+ * // Watch events
530
+ * const unwatch = contract.watch.Transfer((event) => {
531
+ * console.log('Transfer event:', event);
532
+ * });
533
+ * ```
534
+ */
535
+ class MintableERC20 {
536
+ constructor(address, clients) {
537
+ this.contractAddress = address;
538
+ this.publicClient = clients.publicClient;
539
+ this.contract = (0, viem_1.getContract)({
540
+ address,
541
+ abi: exports.MintableERC20Abi,
542
+ client: {
543
+ public: clients.publicClient,
544
+ wallet: clients.walletClient,
545
+ },
546
+ });
547
+ }
548
+ /**
549
+ * Get the contract address
550
+ */
551
+ get address() {
552
+ return this.contractAddress;
553
+ }
554
+ /**
555
+ * Get the underlying viem contract instance.
556
+ */
557
+ getContract() {
558
+ return this.contract;
559
+ }
560
+ /**
561
+ * allowance
562
+ * view
563
+ */
564
+ async allowance(owner, spender) {
565
+ return this.contract.read.allowance([owner, spender]);
566
+ }
567
+ /**
568
+ * balanceOf
569
+ * view
570
+ */
571
+ async balanceOf(account) {
572
+ return this.contract.read.balanceOf([account]);
573
+ }
574
+ /**
575
+ * decimals
576
+ * view
577
+ */
578
+ async decimals() {
579
+ return this.contract.read.decimals();
580
+ }
581
+ /**
582
+ * mintQuota
583
+ * view
584
+ */
585
+ async mintQuota() {
586
+ return this.contract.read.mintQuota();
587
+ }
588
+ /**
589
+ * minter
590
+ * view
591
+ */
592
+ async minter() {
593
+ return this.contract.read.minter();
594
+ }
595
+ /**
596
+ * name
597
+ * view
598
+ */
599
+ async name() {
600
+ return this.contract.read.name();
601
+ }
602
+ /**
603
+ * symbol
604
+ * view
605
+ */
606
+ async symbol() {
607
+ return this.contract.read.symbol();
608
+ }
609
+ /**
610
+ * totalSupply
611
+ * view
612
+ */
613
+ async totalSupply() {
614
+ return this.contract.read.totalSupply();
615
+ }
616
+ /**
617
+ * vault
618
+ * view
619
+ */
620
+ async vault() {
621
+ return this.contract.read.vault();
622
+ }
623
+ /**
624
+ * approve
625
+ * nonpayable
626
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
627
+ */
628
+ async approve(spender, value, options) {
629
+ if (!this.contract.write) {
630
+ throw new Error('Wallet client is required for write operations');
631
+ }
632
+ return this.contract.write.approve([spender, value], options);
633
+ }
634
+ /**
635
+ * burn
636
+ * nonpayable
637
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
638
+ */
639
+ async burn(account, amount, options) {
640
+ if (!this.contract.write) {
641
+ throw new Error('Wallet client is required for write operations');
642
+ }
643
+ return this.contract.write.burn([account, amount], options);
644
+ }
645
+ /**
646
+ * mint
647
+ * nonpayable
648
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
649
+ */
650
+ async mint(account, amount, options) {
651
+ if (!this.contract.write) {
652
+ throw new Error('Wallet client is required for write operations');
653
+ }
654
+ return this.contract.write.mint([account, amount], options);
655
+ }
656
+ /**
657
+ * transfer
658
+ * nonpayable
659
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
660
+ */
661
+ async transfer(to, value, options) {
662
+ if (!this.contract.write) {
663
+ throw new Error('Wallet client is required for write operations');
664
+ }
665
+ return this.contract.write.transfer([to, value], options);
666
+ }
667
+ /**
668
+ * transferFrom
669
+ * nonpayable
670
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
671
+ */
672
+ async transferFrom(from, to, value, options) {
673
+ if (!this.contract.write) {
674
+ throw new Error('Wallet client is required for write operations');
675
+ }
676
+ return this.contract.write.transferFrom([from, to, value], options);
677
+ }
678
+ /**
679
+ * transferMinter
680
+ * nonpayable
681
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
682
+ */
683
+ async transferMinter(newMinter, options) {
684
+ if (!this.contract.write) {
685
+ throw new Error('Wallet client is required for write operations');
686
+ }
687
+ return this.contract.write.transferMinter([newMinter], options);
688
+ }
689
+ /**
690
+ * transferVault
691
+ * nonpayable
692
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
693
+ */
694
+ async transferVault(newVault, options) {
695
+ if (!this.contract.write) {
696
+ throw new Error('Wallet client is required for write operations');
697
+ }
698
+ return this.contract.write.transferVault([newVault], options);
699
+ }
700
+ /**
701
+ * updateMintQuota
702
+ * nonpayable
703
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
704
+ */
705
+ async updateMintQuota(delta, options) {
706
+ if (!this.contract.write) {
707
+ throw new Error('Wallet client is required for write operations');
708
+ }
709
+ return this.contract.write.updateMintQuota([delta], options);
710
+ }
711
+ /**
712
+ * Simulate contract write operations (dry-run without sending transaction)
713
+ *
714
+ * @example
715
+ * const result = await contract.simulate.transfer('0x...', 1000n);
716
+ * console.log('Gas estimate:', result.request.gas);
717
+ * console.log('Would succeed:', result.result);
718
+ */
719
+ get simulate() {
720
+ const contract = this.contract;
721
+ if (!contract.simulate) {
722
+ throw new Error('Public client is required for simulation');
723
+ }
724
+ return {
725
+ /**
726
+ * Simulate approve
727
+ * Returns gas estimate and result without sending transaction
728
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
729
+ */
730
+ async approve(spender, value, options) {
731
+ return contract.simulate.approve([spender, value], options);
732
+ },
733
+ /**
734
+ * Simulate burn
735
+ * Returns gas estimate and result without sending transaction
736
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
737
+ */
738
+ async burn(account, amount, options) {
739
+ return contract.simulate.burn([account, amount], options);
740
+ },
741
+ /**
742
+ * Simulate mint
743
+ * Returns gas estimate and result without sending transaction
744
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
745
+ */
746
+ async mint(account, amount, options) {
747
+ return contract.simulate.mint([account, amount], options);
748
+ },
749
+ /**
750
+ * Simulate transfer
751
+ * Returns gas estimate and result without sending transaction
752
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
753
+ */
754
+ async transfer(to, value, options) {
755
+ return contract.simulate.transfer([to, value], options);
756
+ },
757
+ /**
758
+ * Simulate transferFrom
759
+ * Returns gas estimate and result without sending transaction
760
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
761
+ */
762
+ async transferFrom(from, to, value, options) {
763
+ return contract.simulate.transferFrom([from, to, value], options);
764
+ },
765
+ /**
766
+ * Simulate transferMinter
767
+ * Returns gas estimate and result without sending transaction
768
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
769
+ */
770
+ async transferMinter(newMinter, options) {
771
+ return contract.simulate.transferMinter([newMinter], options);
772
+ },
773
+ /**
774
+ * Simulate transferVault
775
+ * Returns gas estimate and result without sending transaction
776
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
777
+ */
778
+ async transferVault(newVault, options) {
779
+ return contract.simulate.transferVault([newVault], options);
780
+ },
781
+ /**
782
+ * Simulate updateMintQuota
783
+ * Returns gas estimate and result without sending transaction
784
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
785
+ */
786
+ async updateMintQuota(delta, options) {
787
+ return contract.simulate.updateMintQuota([delta], options);
788
+ }
789
+ };
790
+ }
791
+ /**
792
+ * Watch contract events
793
+ *
794
+ * @example
795
+ * // Watch all Transfer events
796
+ * const unwatch = contract.watch.Transfer((event) => {
797
+ * console.log('Transfer:', event);
798
+ * });
799
+ *
800
+ * // Stop watching
801
+ * unwatch();
802
+ */
803
+ get watch() {
804
+ return {
805
+ /**
806
+ * Watch Approval events
807
+ * @param callback Function to call when event is emitted
808
+ * @param filter Optional filter for indexed parameters
809
+ * @returns Unwatch function to stop listening
810
+ */
811
+ Approval: (callback, filter) => {
812
+ return this.publicClient.watchContractEvent({
813
+ address: this.contractAddress,
814
+ abi: exports.MintableERC20Abi,
815
+ eventName: 'Approval',
816
+ args: filter,
817
+ onLogs: (logs) => {
818
+ logs.forEach((log) => {
819
+ callback(log.args);
820
+ });
821
+ },
822
+ });
823
+ },
824
+ /**
825
+ * Watch MinterTransferred events
826
+ * @param callback Function to call when event is emitted
827
+ * @param filter Optional filter for indexed parameters
828
+ * @returns Unwatch function to stop listening
829
+ */
830
+ MinterTransferred: (callback, filter) => {
831
+ return this.publicClient.watchContractEvent({
832
+ address: this.contractAddress,
833
+ abi: exports.MintableERC20Abi,
834
+ eventName: 'MinterTransferred',
835
+ args: filter,
836
+ onLogs: (logs) => {
837
+ logs.forEach((log) => {
838
+ callback(log.args);
839
+ });
840
+ },
841
+ });
842
+ },
843
+ /**
844
+ * Watch Transfer events
845
+ * @param callback Function to call when event is emitted
846
+ * @param filter Optional filter for indexed parameters
847
+ * @returns Unwatch function to stop listening
848
+ */
849
+ Transfer: (callback, filter) => {
850
+ return this.publicClient.watchContractEvent({
851
+ address: this.contractAddress,
852
+ abi: exports.MintableERC20Abi,
853
+ eventName: 'Transfer',
854
+ args: filter,
855
+ onLogs: (logs) => {
856
+ logs.forEach((log) => {
857
+ callback(log.args);
858
+ });
859
+ },
860
+ });
861
+ },
862
+ /**
863
+ * Watch VaultTransferred events
864
+ * @param callback Function to call when event is emitted
865
+ * @param filter Optional filter for indexed parameters
866
+ * @returns Unwatch function to stop listening
867
+ */
868
+ VaultTransferred: (callback, filter) => {
869
+ return this.publicClient.watchContractEvent({
870
+ address: this.contractAddress,
871
+ abi: exports.MintableERC20Abi,
872
+ eventName: 'VaultTransferred',
873
+ args: filter,
874
+ onLogs: (logs) => {
875
+ logs.forEach((log) => {
876
+ callback(log.args);
877
+ });
878
+ },
879
+ });
880
+ }
881
+ };
882
+ }
883
+ }
884
+ exports.MintableERC20 = MintableERC20;