@gitmyabi/slop 0.0.0-stage → 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,1607 @@
1
+ import type { Abi, Address, PublicClient, WalletClient, GetContractReturnType } from 'viem';
2
+ import { getContract } from 'viem';
3
+
4
+ /**
5
+ * Slop_json ABI
6
+ *
7
+ * This ABI is typed using viem's type system for full type safety.
8
+ */
9
+ export const Slop_jsonAbi = [
10
+ {
11
+ "inputs": [
12
+ {
13
+ "internalType": "address",
14
+ "name": "owner_",
15
+ "type": "address"
16
+ }
17
+ ],
18
+ "stateMutability": "nonpayable",
19
+ "type": "constructor"
20
+ },
21
+ {
22
+ "inputs": [],
23
+ "name": "AllowanceOverflow",
24
+ "type": "error"
25
+ },
26
+ {
27
+ "inputs": [],
28
+ "name": "AllowanceUnderflow",
29
+ "type": "error"
30
+ },
31
+ {
32
+ "inputs": [],
33
+ "name": "AlreadyInitialized",
34
+ "type": "error"
35
+ },
36
+ {
37
+ "inputs": [],
38
+ "name": "InsufficientAllowance",
39
+ "type": "error"
40
+ },
41
+ {
42
+ "inputs": [],
43
+ "name": "InsufficientBalance",
44
+ "type": "error"
45
+ },
46
+ {
47
+ "inputs": [],
48
+ "name": "InvalidPermit",
49
+ "type": "error"
50
+ },
51
+ {
52
+ "inputs": [],
53
+ "name": "LaunchInventoryAlreadyMinted",
54
+ "type": "error"
55
+ },
56
+ {
57
+ "inputs": [
58
+ {
59
+ "internalType": "uint256",
60
+ "name": "attemptedSupply",
61
+ "type": "uint256"
62
+ }
63
+ ],
64
+ "name": "MaxSupplyExceeded",
65
+ "type": "error"
66
+ },
67
+ {
68
+ "inputs": [],
69
+ "name": "NewOwnerIsZeroAddress",
70
+ "type": "error"
71
+ },
72
+ {
73
+ "inputs": [],
74
+ "name": "NoHandoverRequest",
75
+ "type": "error"
76
+ },
77
+ {
78
+ "inputs": [
79
+ {
80
+ "internalType": "address",
81
+ "name": "caller",
82
+ "type": "address"
83
+ }
84
+ ],
85
+ "name": "NotMinter",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "Permit2AllowanceIsFixedAtInfinity",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "PermitExpired",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "TotalSupplyOverflow",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "Unauthorized",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "ZeroAddress",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "anonymous": false,
115
+ "inputs": [
116
+ {
117
+ "indexed": true,
118
+ "internalType": "address",
119
+ "name": "owner",
120
+ "type": "address"
121
+ },
122
+ {
123
+ "indexed": true,
124
+ "internalType": "address",
125
+ "name": "spender",
126
+ "type": "address"
127
+ },
128
+ {
129
+ "indexed": false,
130
+ "internalType": "uint256",
131
+ "name": "amount",
132
+ "type": "uint256"
133
+ }
134
+ ],
135
+ "name": "Approval",
136
+ "type": "event"
137
+ },
138
+ {
139
+ "anonymous": false,
140
+ "inputs": [
141
+ {
142
+ "indexed": true,
143
+ "internalType": "address",
144
+ "name": "to",
145
+ "type": "address"
146
+ },
147
+ {
148
+ "indexed": false,
149
+ "internalType": "uint256",
150
+ "name": "amount",
151
+ "type": "uint256"
152
+ }
153
+ ],
154
+ "name": "LaunchInventoryMinted",
155
+ "type": "event"
156
+ },
157
+ {
158
+ "anonymous": false,
159
+ "inputs": [
160
+ {
161
+ "indexed": true,
162
+ "internalType": "address",
163
+ "name": "minter",
164
+ "type": "address"
165
+ },
166
+ {
167
+ "indexed": false,
168
+ "internalType": "bool",
169
+ "name": "allowed",
170
+ "type": "bool"
171
+ }
172
+ ],
173
+ "name": "MinterUpdated",
174
+ "type": "event"
175
+ },
176
+ {
177
+ "anonymous": false,
178
+ "inputs": [
179
+ {
180
+ "indexed": true,
181
+ "internalType": "address",
182
+ "name": "pendingOwner",
183
+ "type": "address"
184
+ }
185
+ ],
186
+ "name": "OwnershipHandoverCanceled",
187
+ "type": "event"
188
+ },
189
+ {
190
+ "anonymous": false,
191
+ "inputs": [
192
+ {
193
+ "indexed": true,
194
+ "internalType": "address",
195
+ "name": "pendingOwner",
196
+ "type": "address"
197
+ }
198
+ ],
199
+ "name": "OwnershipHandoverRequested",
200
+ "type": "event"
201
+ },
202
+ {
203
+ "anonymous": false,
204
+ "inputs": [
205
+ {
206
+ "indexed": true,
207
+ "internalType": "address",
208
+ "name": "oldOwner",
209
+ "type": "address"
210
+ },
211
+ {
212
+ "indexed": true,
213
+ "internalType": "address",
214
+ "name": "newOwner",
215
+ "type": "address"
216
+ }
217
+ ],
218
+ "name": "OwnershipTransferred",
219
+ "type": "event"
220
+ },
221
+ {
222
+ "anonymous": false,
223
+ "inputs": [
224
+ {
225
+ "indexed": true,
226
+ "internalType": "address",
227
+ "name": "from",
228
+ "type": "address"
229
+ },
230
+ {
231
+ "indexed": true,
232
+ "internalType": "address",
233
+ "name": "to",
234
+ "type": "address"
235
+ },
236
+ {
237
+ "indexed": false,
238
+ "internalType": "uint256",
239
+ "name": "amount",
240
+ "type": "uint256"
241
+ }
242
+ ],
243
+ "name": "Transfer",
244
+ "type": "event"
245
+ },
246
+ {
247
+ "inputs": [],
248
+ "name": "DOMAIN_SEPARATOR",
249
+ "outputs": [
250
+ {
251
+ "internalType": "bytes32",
252
+ "name": "result",
253
+ "type": "bytes32"
254
+ }
255
+ ],
256
+ "stateMutability": "view",
257
+ "type": "function"
258
+ },
259
+ {
260
+ "inputs": [],
261
+ "name": "LAUNCH_SUPPLY",
262
+ "outputs": [
263
+ {
264
+ "internalType": "uint256",
265
+ "name": "",
266
+ "type": "uint256"
267
+ }
268
+ ],
269
+ "stateMutability": "view",
270
+ "type": "function"
271
+ },
272
+ {
273
+ "inputs": [],
274
+ "name": "MAX_SUPPLY",
275
+ "outputs": [
276
+ {
277
+ "internalType": "uint256",
278
+ "name": "",
279
+ "type": "uint256"
280
+ }
281
+ ],
282
+ "stateMutability": "view",
283
+ "type": "function"
284
+ },
285
+ {
286
+ "inputs": [
287
+ {
288
+ "internalType": "address",
289
+ "name": "owner",
290
+ "type": "address"
291
+ },
292
+ {
293
+ "internalType": "address",
294
+ "name": "spender",
295
+ "type": "address"
296
+ }
297
+ ],
298
+ "name": "allowance",
299
+ "outputs": [
300
+ {
301
+ "internalType": "uint256",
302
+ "name": "result",
303
+ "type": "uint256"
304
+ }
305
+ ],
306
+ "stateMutability": "view",
307
+ "type": "function"
308
+ },
309
+ {
310
+ "inputs": [
311
+ {
312
+ "internalType": "address",
313
+ "name": "spender",
314
+ "type": "address"
315
+ },
316
+ {
317
+ "internalType": "uint256",
318
+ "name": "amount",
319
+ "type": "uint256"
320
+ }
321
+ ],
322
+ "name": "approve",
323
+ "outputs": [
324
+ {
325
+ "internalType": "bool",
326
+ "name": "",
327
+ "type": "bool"
328
+ }
329
+ ],
330
+ "stateMutability": "nonpayable",
331
+ "type": "function"
332
+ },
333
+ {
334
+ "inputs": [
335
+ {
336
+ "internalType": "address",
337
+ "name": "owner",
338
+ "type": "address"
339
+ }
340
+ ],
341
+ "name": "balanceOf",
342
+ "outputs": [
343
+ {
344
+ "internalType": "uint256",
345
+ "name": "result",
346
+ "type": "uint256"
347
+ }
348
+ ],
349
+ "stateMutability": "view",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "address",
356
+ "name": "from",
357
+ "type": "address"
358
+ },
359
+ {
360
+ "internalType": "uint256",
361
+ "name": "amount",
362
+ "type": "uint256"
363
+ }
364
+ ],
365
+ "name": "burn",
366
+ "outputs": [],
367
+ "stateMutability": "nonpayable",
368
+ "type": "function"
369
+ },
370
+ {
371
+ "inputs": [],
372
+ "name": "cancelOwnershipHandover",
373
+ "outputs": [],
374
+ "stateMutability": "payable",
375
+ "type": "function"
376
+ },
377
+ {
378
+ "inputs": [
379
+ {
380
+ "internalType": "address",
381
+ "name": "pendingOwner",
382
+ "type": "address"
383
+ }
384
+ ],
385
+ "name": "completeOwnershipHandover",
386
+ "outputs": [],
387
+ "stateMutability": "payable",
388
+ "type": "function"
389
+ },
390
+ {
391
+ "inputs": [],
392
+ "name": "decimals",
393
+ "outputs": [
394
+ {
395
+ "internalType": "uint8",
396
+ "name": "",
397
+ "type": "uint8"
398
+ }
399
+ ],
400
+ "stateMutability": "view",
401
+ "type": "function"
402
+ },
403
+ {
404
+ "inputs": [],
405
+ "name": "launchInventoryMinted",
406
+ "outputs": [
407
+ {
408
+ "internalType": "bool",
409
+ "name": "",
410
+ "type": "bool"
411
+ }
412
+ ],
413
+ "stateMutability": "view",
414
+ "type": "function"
415
+ },
416
+ {
417
+ "inputs": [
418
+ {
419
+ "internalType": "address",
420
+ "name": "to",
421
+ "type": "address"
422
+ },
423
+ {
424
+ "internalType": "uint256",
425
+ "name": "amount",
426
+ "type": "uint256"
427
+ }
428
+ ],
429
+ "name": "mint",
430
+ "outputs": [],
431
+ "stateMutability": "nonpayable",
432
+ "type": "function"
433
+ },
434
+ {
435
+ "inputs": [
436
+ {
437
+ "internalType": "address",
438
+ "name": "to",
439
+ "type": "address"
440
+ }
441
+ ],
442
+ "name": "mintLaunchInventory",
443
+ "outputs": [],
444
+ "stateMutability": "nonpayable",
445
+ "type": "function"
446
+ },
447
+ {
448
+ "inputs": [
449
+ {
450
+ "internalType": "address",
451
+ "name": "",
452
+ "type": "address"
453
+ }
454
+ ],
455
+ "name": "minters",
456
+ "outputs": [
457
+ {
458
+ "internalType": "bool",
459
+ "name": "",
460
+ "type": "bool"
461
+ }
462
+ ],
463
+ "stateMutability": "view",
464
+ "type": "function"
465
+ },
466
+ {
467
+ "inputs": [],
468
+ "name": "name",
469
+ "outputs": [
470
+ {
471
+ "internalType": "string",
472
+ "name": "",
473
+ "type": "string"
474
+ }
475
+ ],
476
+ "stateMutability": "pure",
477
+ "type": "function"
478
+ },
479
+ {
480
+ "inputs": [
481
+ {
482
+ "internalType": "address",
483
+ "name": "owner",
484
+ "type": "address"
485
+ }
486
+ ],
487
+ "name": "nonces",
488
+ "outputs": [
489
+ {
490
+ "internalType": "uint256",
491
+ "name": "result",
492
+ "type": "uint256"
493
+ }
494
+ ],
495
+ "stateMutability": "view",
496
+ "type": "function"
497
+ },
498
+ {
499
+ "inputs": [],
500
+ "name": "owner",
501
+ "outputs": [
502
+ {
503
+ "internalType": "address",
504
+ "name": "result",
505
+ "type": "address"
506
+ }
507
+ ],
508
+ "stateMutability": "view",
509
+ "type": "function"
510
+ },
511
+ {
512
+ "inputs": [
513
+ {
514
+ "internalType": "address",
515
+ "name": "pendingOwner",
516
+ "type": "address"
517
+ }
518
+ ],
519
+ "name": "ownershipHandoverExpiresAt",
520
+ "outputs": [
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "result",
524
+ "type": "uint256"
525
+ }
526
+ ],
527
+ "stateMutability": "view",
528
+ "type": "function"
529
+ },
530
+ {
531
+ "inputs": [
532
+ {
533
+ "internalType": "address",
534
+ "name": "owner",
535
+ "type": "address"
536
+ },
537
+ {
538
+ "internalType": "address",
539
+ "name": "spender",
540
+ "type": "address"
541
+ },
542
+ {
543
+ "internalType": "uint256",
544
+ "name": "value",
545
+ "type": "uint256"
546
+ },
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "deadline",
550
+ "type": "uint256"
551
+ },
552
+ {
553
+ "internalType": "uint8",
554
+ "name": "v",
555
+ "type": "uint8"
556
+ },
557
+ {
558
+ "internalType": "bytes32",
559
+ "name": "r",
560
+ "type": "bytes32"
561
+ },
562
+ {
563
+ "internalType": "bytes32",
564
+ "name": "s",
565
+ "type": "bytes32"
566
+ }
567
+ ],
568
+ "name": "permit",
569
+ "outputs": [],
570
+ "stateMutability": "nonpayable",
571
+ "type": "function"
572
+ },
573
+ {
574
+ "inputs": [],
575
+ "name": "renounceOwnership",
576
+ "outputs": [],
577
+ "stateMutability": "payable",
578
+ "type": "function"
579
+ },
580
+ {
581
+ "inputs": [],
582
+ "name": "requestOwnershipHandover",
583
+ "outputs": [],
584
+ "stateMutability": "payable",
585
+ "type": "function"
586
+ },
587
+ {
588
+ "inputs": [
589
+ {
590
+ "internalType": "address",
591
+ "name": "minter",
592
+ "type": "address"
593
+ },
594
+ {
595
+ "internalType": "bool",
596
+ "name": "allowed",
597
+ "type": "bool"
598
+ }
599
+ ],
600
+ "name": "setMinter",
601
+ "outputs": [],
602
+ "stateMutability": "nonpayable",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [],
607
+ "name": "symbol",
608
+ "outputs": [
609
+ {
610
+ "internalType": "string",
611
+ "name": "",
612
+ "type": "string"
613
+ }
614
+ ],
615
+ "stateMutability": "pure",
616
+ "type": "function"
617
+ },
618
+ {
619
+ "inputs": [],
620
+ "name": "totalSupply",
621
+ "outputs": [
622
+ {
623
+ "internalType": "uint256",
624
+ "name": "result",
625
+ "type": "uint256"
626
+ }
627
+ ],
628
+ "stateMutability": "view",
629
+ "type": "function"
630
+ },
631
+ {
632
+ "inputs": [
633
+ {
634
+ "internalType": "address",
635
+ "name": "to",
636
+ "type": "address"
637
+ },
638
+ {
639
+ "internalType": "uint256",
640
+ "name": "amount",
641
+ "type": "uint256"
642
+ }
643
+ ],
644
+ "name": "transfer",
645
+ "outputs": [
646
+ {
647
+ "internalType": "bool",
648
+ "name": "",
649
+ "type": "bool"
650
+ }
651
+ ],
652
+ "stateMutability": "nonpayable",
653
+ "type": "function"
654
+ },
655
+ {
656
+ "inputs": [
657
+ {
658
+ "internalType": "address",
659
+ "name": "from",
660
+ "type": "address"
661
+ },
662
+ {
663
+ "internalType": "address",
664
+ "name": "to",
665
+ "type": "address"
666
+ },
667
+ {
668
+ "internalType": "uint256",
669
+ "name": "amount",
670
+ "type": "uint256"
671
+ }
672
+ ],
673
+ "name": "transferFrom",
674
+ "outputs": [
675
+ {
676
+ "internalType": "bool",
677
+ "name": "",
678
+ "type": "bool"
679
+ }
680
+ ],
681
+ "stateMutability": "nonpayable",
682
+ "type": "function"
683
+ },
684
+ {
685
+ "inputs": [
686
+ {
687
+ "internalType": "address",
688
+ "name": "newOwner",
689
+ "type": "address"
690
+ }
691
+ ],
692
+ "name": "transferOwnership",
693
+ "outputs": [],
694
+ "stateMutability": "payable",
695
+ "type": "function"
696
+ }
697
+ ] as const satisfies Abi;
698
+
699
+ /**
700
+ * Type-safe ABI for Slop_json
701
+ */
702
+ export type Slop_jsonAbi = typeof Slop_jsonAbi;
703
+
704
+ /**
705
+ * Contract instance type for Slop_json
706
+ */
707
+ // Use any for contract type to avoid complex viem type issues
708
+ // The runtime behavior is type-safe through viem's ABI typing
709
+ export type Slop_jsonContract = any;
710
+
711
+ /**
712
+ * Slop_json Contract Class
713
+ *
714
+ * Provides a class-based API similar to TypeChain for interacting with the contract.
715
+ *
716
+ * @example
717
+ * ```typescript
718
+ * import { createPublicClient, createWalletClient, http } from 'viem';
719
+ * import { mainnet } from 'viem/chains';
720
+ * import { Slop_json } from 'Slop_json';
721
+ *
722
+ * const publicClient = createPublicClient({ chain: mainnet, transport: http() });
723
+ * const walletClient = createWalletClient({ chain: mainnet, transport: http() });
724
+ *
725
+ * const contract = new Slop_json('0x...', { publicClient, walletClient });
726
+ *
727
+ * // Read functions
728
+ * const result = await contract.balanceOf('0x...');
729
+ *
730
+ * // Write functions
731
+ * const hash = await contract.transfer('0x...', 1000n);
732
+ *
733
+ * // Simulate transactions (dry-run)
734
+ * const simulation = await contract.simulate.transfer('0x...', 1000n);
735
+ * console.log('Gas estimate:', simulation.request.gas);
736
+ *
737
+ * // Watch events
738
+ * const unwatch = contract.watch.Transfer((event) => {
739
+ * console.log('Transfer event:', event);
740
+ * });
741
+ * ```
742
+ */
743
+ export class Slop_json {
744
+ private contract: Slop_jsonContract;
745
+ private contractAddress: Address;
746
+ private publicClient: PublicClient;
747
+
748
+ constructor(
749
+ address: Address,
750
+ clients: {
751
+ publicClient: PublicClient;
752
+ walletClient?: WalletClient;
753
+ }
754
+ ) {
755
+ this.contractAddress = address;
756
+ this.publicClient = clients.publicClient;
757
+ this.contract = getContract({
758
+ address,
759
+ abi: Slop_jsonAbi,
760
+ client: {
761
+ public: clients.publicClient,
762
+ wallet: clients.walletClient,
763
+ },
764
+ });
765
+ }
766
+
767
+ /**
768
+ * Get the contract address
769
+ */
770
+ get address(): Address {
771
+ return this.contractAddress;
772
+ }
773
+
774
+ /**
775
+ * Get the underlying viem contract instance
776
+ */
777
+ getContract(): Slop_jsonContract {
778
+ return this.contract;
779
+ }
780
+
781
+ /**
782
+ * DOMAIN_SEPARATOR
783
+ * view
784
+ */
785
+ async DOMAIN_SEPARATOR(): Promise<`0x${string}`> {
786
+ return this.contract.read.DOMAIN_SEPARATOR() as Promise<`0x${string}`>;
787
+ }
788
+
789
+ /**
790
+ * LAUNCH_SUPPLY
791
+ * view
792
+ */
793
+ async LAUNCH_SUPPLY(): Promise<bigint> {
794
+ return this.contract.read.LAUNCH_SUPPLY() as Promise<bigint>;
795
+ }
796
+
797
+ /**
798
+ * MAX_SUPPLY
799
+ * view
800
+ */
801
+ async MAX_SUPPLY(): Promise<bigint> {
802
+ return this.contract.read.MAX_SUPPLY() as Promise<bigint>;
803
+ }
804
+
805
+ /**
806
+ * allowance
807
+ * view
808
+ */
809
+ async allowance(owner: `0x${string}`, spender: `0x${string}`): Promise<bigint> {
810
+ return this.contract.read.allowance([owner, spender] as const) as Promise<bigint>;
811
+ }
812
+
813
+ /**
814
+ * balanceOf
815
+ * view
816
+ */
817
+ async balanceOf(owner: `0x${string}`): Promise<bigint> {
818
+ return this.contract.read.balanceOf([owner] as const) as Promise<bigint>;
819
+ }
820
+
821
+ /**
822
+ * decimals
823
+ * view
824
+ */
825
+ async decimals(): Promise<bigint> {
826
+ return this.contract.read.decimals() as Promise<bigint>;
827
+ }
828
+
829
+ /**
830
+ * launchInventoryMinted
831
+ * view
832
+ */
833
+ async launchInventoryMinted(): Promise<boolean> {
834
+ return this.contract.read.launchInventoryMinted() as Promise<boolean>;
835
+ }
836
+
837
+ /**
838
+ * minters
839
+ * view
840
+ */
841
+ async minters(arg0: `0x${string}`): Promise<boolean> {
842
+ return this.contract.read.minters([arg0] as const) as Promise<boolean>;
843
+ }
844
+
845
+ /**
846
+ * name
847
+ * pure
848
+ */
849
+ async name(): Promise<string> {
850
+ return this.contract.read.name() as Promise<string>;
851
+ }
852
+
853
+ /**
854
+ * nonces
855
+ * view
856
+ */
857
+ async nonces(owner: `0x${string}`): Promise<bigint> {
858
+ return this.contract.read.nonces([owner] as const) as Promise<bigint>;
859
+ }
860
+
861
+ /**
862
+ * owner
863
+ * view
864
+ */
865
+ async owner(): Promise<`0x${string}`> {
866
+ return this.contract.read.owner() as Promise<`0x${string}`>;
867
+ }
868
+
869
+ /**
870
+ * ownershipHandoverExpiresAt
871
+ * view
872
+ */
873
+ async ownershipHandoverExpiresAt(pendingOwner: `0x${string}`): Promise<bigint> {
874
+ return this.contract.read.ownershipHandoverExpiresAt([pendingOwner] as const) as Promise<bigint>;
875
+ }
876
+
877
+ /**
878
+ * symbol
879
+ * pure
880
+ */
881
+ async symbol(): Promise<string> {
882
+ return this.contract.read.symbol() as Promise<string>;
883
+ }
884
+
885
+ /**
886
+ * totalSupply
887
+ * view
888
+ */
889
+ async totalSupply(): Promise<bigint> {
890
+ return this.contract.read.totalSupply() as Promise<bigint>;
891
+ }
892
+
893
+ /**
894
+ * approve
895
+ * nonpayable
896
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
897
+ */
898
+ async approve(spender: `0x${string}`, amount: bigint, options?: {
899
+ accessList?: import('viem').AccessList;
900
+ authorizationList?: import('viem').AuthorizationList;
901
+ chain?: import('viem').Chain | null;
902
+ dataSuffix?: `0x${string}`;
903
+ gas?: bigint;
904
+ gasPrice?: bigint;
905
+ maxFeePerGas?: bigint;
906
+ maxPriorityFeePerGas?: bigint;
907
+ nonce?: number;
908
+ value?: bigint;
909
+ }): Promise<`0x${string}`> {
910
+ if (!this.contract.write) {
911
+ throw new Error('Wallet client is required for write operations');
912
+ }
913
+ return this.contract.write.approve([spender, amount] as const, options) as Promise<`0x${string}`>;
914
+ }
915
+
916
+ /**
917
+ * burn
918
+ * nonpayable
919
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
920
+ */
921
+ async burn(from: `0x${string}`, amount: bigint, options?: {
922
+ accessList?: import('viem').AccessList;
923
+ authorizationList?: import('viem').AuthorizationList;
924
+ chain?: import('viem').Chain | null;
925
+ dataSuffix?: `0x${string}`;
926
+ gas?: bigint;
927
+ gasPrice?: bigint;
928
+ maxFeePerGas?: bigint;
929
+ maxPriorityFeePerGas?: bigint;
930
+ nonce?: number;
931
+ value?: bigint;
932
+ }): Promise<`0x${string}`> {
933
+ if (!this.contract.write) {
934
+ throw new Error('Wallet client is required for write operations');
935
+ }
936
+ return this.contract.write.burn([from, amount] as const, options) as Promise<`0x${string}`>;
937
+ }
938
+
939
+ /**
940
+ * cancelOwnershipHandover
941
+ * payable
942
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
943
+ */
944
+ async cancelOwnershipHandover(options?: {
945
+ accessList?: import('viem').AccessList;
946
+ authorizationList?: import('viem').AuthorizationList;
947
+ chain?: import('viem').Chain | null;
948
+ dataSuffix?: `0x${string}`;
949
+ gas?: bigint;
950
+ gasPrice?: bigint;
951
+ maxFeePerGas?: bigint;
952
+ maxPriorityFeePerGas?: bigint;
953
+ nonce?: number;
954
+ value?: bigint;
955
+ }): Promise<`0x${string}`> {
956
+ if (!this.contract.write) {
957
+ throw new Error('Wallet client is required for write operations');
958
+ }
959
+ return this.contract.write.cancelOwnershipHandover(options) as Promise<`0x${string}`>;
960
+ }
961
+
962
+ /**
963
+ * completeOwnershipHandover
964
+ * payable
965
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
966
+ */
967
+ async completeOwnershipHandover(pendingOwner: `0x${string}`, options?: {
968
+ accessList?: import('viem').AccessList;
969
+ authorizationList?: import('viem').AuthorizationList;
970
+ chain?: import('viem').Chain | null;
971
+ dataSuffix?: `0x${string}`;
972
+ gas?: bigint;
973
+ gasPrice?: bigint;
974
+ maxFeePerGas?: bigint;
975
+ maxPriorityFeePerGas?: bigint;
976
+ nonce?: number;
977
+ value?: bigint;
978
+ }): Promise<`0x${string}`> {
979
+ if (!this.contract.write) {
980
+ throw new Error('Wallet client is required for write operations');
981
+ }
982
+ return this.contract.write.completeOwnershipHandover([pendingOwner] as const, options) as Promise<`0x${string}`>;
983
+ }
984
+
985
+ /**
986
+ * mint
987
+ * nonpayable
988
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
989
+ */
990
+ async mint(to: `0x${string}`, amount: bigint, options?: {
991
+ accessList?: import('viem').AccessList;
992
+ authorizationList?: import('viem').AuthorizationList;
993
+ chain?: import('viem').Chain | null;
994
+ dataSuffix?: `0x${string}`;
995
+ gas?: bigint;
996
+ gasPrice?: bigint;
997
+ maxFeePerGas?: bigint;
998
+ maxPriorityFeePerGas?: bigint;
999
+ nonce?: number;
1000
+ value?: bigint;
1001
+ }): Promise<`0x${string}`> {
1002
+ if (!this.contract.write) {
1003
+ throw new Error('Wallet client is required for write operations');
1004
+ }
1005
+ return this.contract.write.mint([to, amount] as const, options) as Promise<`0x${string}`>;
1006
+ }
1007
+
1008
+ /**
1009
+ * mintLaunchInventory
1010
+ * nonpayable
1011
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1012
+ */
1013
+ async mintLaunchInventory(to: `0x${string}`, options?: {
1014
+ accessList?: import('viem').AccessList;
1015
+ authorizationList?: import('viem').AuthorizationList;
1016
+ chain?: import('viem').Chain | null;
1017
+ dataSuffix?: `0x${string}`;
1018
+ gas?: bigint;
1019
+ gasPrice?: bigint;
1020
+ maxFeePerGas?: bigint;
1021
+ maxPriorityFeePerGas?: bigint;
1022
+ nonce?: number;
1023
+ value?: bigint;
1024
+ }): Promise<`0x${string}`> {
1025
+ if (!this.contract.write) {
1026
+ throw new Error('Wallet client is required for write operations');
1027
+ }
1028
+ return this.contract.write.mintLaunchInventory([to] as const, options) as Promise<`0x${string}`>;
1029
+ }
1030
+
1031
+ /**
1032
+ * permit
1033
+ * nonpayable
1034
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1035
+ */
1036
+ async permit(owner: `0x${string}`, spender: `0x${string}`, value: bigint, deadline: bigint, v: bigint, r: `0x${string}`, s: `0x${string}`, options?: {
1037
+ accessList?: import('viem').AccessList;
1038
+ authorizationList?: import('viem').AuthorizationList;
1039
+ chain?: import('viem').Chain | null;
1040
+ dataSuffix?: `0x${string}`;
1041
+ gas?: bigint;
1042
+ gasPrice?: bigint;
1043
+ maxFeePerGas?: bigint;
1044
+ maxPriorityFeePerGas?: bigint;
1045
+ nonce?: number;
1046
+ value?: bigint;
1047
+ }): Promise<`0x${string}`> {
1048
+ if (!this.contract.write) {
1049
+ throw new Error('Wallet client is required for write operations');
1050
+ }
1051
+ return this.contract.write.permit([owner, spender, value, deadline, v, r, s] as const, options) as Promise<`0x${string}`>;
1052
+ }
1053
+
1054
+ /**
1055
+ * renounceOwnership
1056
+ * payable
1057
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1058
+ */
1059
+ async renounceOwnership(options?: {
1060
+ accessList?: import('viem').AccessList;
1061
+ authorizationList?: import('viem').AuthorizationList;
1062
+ chain?: import('viem').Chain | null;
1063
+ dataSuffix?: `0x${string}`;
1064
+ gas?: bigint;
1065
+ gasPrice?: bigint;
1066
+ maxFeePerGas?: bigint;
1067
+ maxPriorityFeePerGas?: bigint;
1068
+ nonce?: number;
1069
+ value?: bigint;
1070
+ }): Promise<`0x${string}`> {
1071
+ if (!this.contract.write) {
1072
+ throw new Error('Wallet client is required for write operations');
1073
+ }
1074
+ return this.contract.write.renounceOwnership(options) as Promise<`0x${string}`>;
1075
+ }
1076
+
1077
+ /**
1078
+ * requestOwnershipHandover
1079
+ * payable
1080
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1081
+ */
1082
+ async requestOwnershipHandover(options?: {
1083
+ accessList?: import('viem').AccessList;
1084
+ authorizationList?: import('viem').AuthorizationList;
1085
+ chain?: import('viem').Chain | null;
1086
+ dataSuffix?: `0x${string}`;
1087
+ gas?: bigint;
1088
+ gasPrice?: bigint;
1089
+ maxFeePerGas?: bigint;
1090
+ maxPriorityFeePerGas?: bigint;
1091
+ nonce?: number;
1092
+ value?: bigint;
1093
+ }): Promise<`0x${string}`> {
1094
+ if (!this.contract.write) {
1095
+ throw new Error('Wallet client is required for write operations');
1096
+ }
1097
+ return this.contract.write.requestOwnershipHandover(options) as Promise<`0x${string}`>;
1098
+ }
1099
+
1100
+ /**
1101
+ * setMinter
1102
+ * nonpayable
1103
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1104
+ */
1105
+ async setMinter(minter: `0x${string}`, allowed: boolean, options?: {
1106
+ accessList?: import('viem').AccessList;
1107
+ authorizationList?: import('viem').AuthorizationList;
1108
+ chain?: import('viem').Chain | null;
1109
+ dataSuffix?: `0x${string}`;
1110
+ gas?: bigint;
1111
+ gasPrice?: bigint;
1112
+ maxFeePerGas?: bigint;
1113
+ maxPriorityFeePerGas?: bigint;
1114
+ nonce?: number;
1115
+ value?: bigint;
1116
+ }): Promise<`0x${string}`> {
1117
+ if (!this.contract.write) {
1118
+ throw new Error('Wallet client is required for write operations');
1119
+ }
1120
+ return this.contract.write.setMinter([minter, allowed] as const, options) as Promise<`0x${string}`>;
1121
+ }
1122
+
1123
+ /**
1124
+ * transfer
1125
+ * nonpayable
1126
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1127
+ */
1128
+ async transfer(to: `0x${string}`, amount: bigint, options?: {
1129
+ accessList?: import('viem').AccessList;
1130
+ authorizationList?: import('viem').AuthorizationList;
1131
+ chain?: import('viem').Chain | null;
1132
+ dataSuffix?: `0x${string}`;
1133
+ gas?: bigint;
1134
+ gasPrice?: bigint;
1135
+ maxFeePerGas?: bigint;
1136
+ maxPriorityFeePerGas?: bigint;
1137
+ nonce?: number;
1138
+ value?: bigint;
1139
+ }): Promise<`0x${string}`> {
1140
+ if (!this.contract.write) {
1141
+ throw new Error('Wallet client is required for write operations');
1142
+ }
1143
+ return this.contract.write.transfer([to, amount] as const, options) as Promise<`0x${string}`>;
1144
+ }
1145
+
1146
+ /**
1147
+ * transferFrom
1148
+ * nonpayable
1149
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1150
+ */
1151
+ async transferFrom(from: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
1152
+ accessList?: import('viem').AccessList;
1153
+ authorizationList?: import('viem').AuthorizationList;
1154
+ chain?: import('viem').Chain | null;
1155
+ dataSuffix?: `0x${string}`;
1156
+ gas?: bigint;
1157
+ gasPrice?: bigint;
1158
+ maxFeePerGas?: bigint;
1159
+ maxPriorityFeePerGas?: bigint;
1160
+ nonce?: number;
1161
+ value?: bigint;
1162
+ }): Promise<`0x${string}`> {
1163
+ if (!this.contract.write) {
1164
+ throw new Error('Wallet client is required for write operations');
1165
+ }
1166
+ return this.contract.write.transferFrom([from, to, amount] as const, options) as Promise<`0x${string}`>;
1167
+ }
1168
+
1169
+ /**
1170
+ * transferOwnership
1171
+ * payable
1172
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1173
+ */
1174
+ async transferOwnership(newOwner: `0x${string}`, options?: {
1175
+ accessList?: import('viem').AccessList;
1176
+ authorizationList?: import('viem').AuthorizationList;
1177
+ chain?: import('viem').Chain | null;
1178
+ dataSuffix?: `0x${string}`;
1179
+ gas?: bigint;
1180
+ gasPrice?: bigint;
1181
+ maxFeePerGas?: bigint;
1182
+ maxPriorityFeePerGas?: bigint;
1183
+ nonce?: number;
1184
+ value?: bigint;
1185
+ }): Promise<`0x${string}`> {
1186
+ if (!this.contract.write) {
1187
+ throw new Error('Wallet client is required for write operations');
1188
+ }
1189
+ return this.contract.write.transferOwnership([newOwner] as const, options) as Promise<`0x${string}`>;
1190
+ }
1191
+
1192
+
1193
+
1194
+ /**
1195
+ * Simulate contract write operations (dry-run without sending transaction)
1196
+ *
1197
+ * @example
1198
+ * const result = await contract.simulate.transfer('0x...', 1000n);
1199
+ * console.log('Gas estimate:', result.request.gas);
1200
+ * console.log('Would succeed:', result.result);
1201
+ */
1202
+ get simulate() {
1203
+ const contract = this.contract;
1204
+ if (!contract.simulate) {
1205
+ throw new Error('Public client is required for simulation');
1206
+ }
1207
+ return {
1208
+ /**
1209
+ * Simulate approve
1210
+ * Returns gas estimate and result without sending transaction
1211
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1212
+ */
1213
+ async approve(spender: `0x${string}`, amount: bigint, options?: {
1214
+ accessList?: import('viem').AccessList;
1215
+ authorizationList?: import('viem').AuthorizationList;
1216
+ chain?: import('viem').Chain | null;
1217
+ dataSuffix?: `0x${string}`;
1218
+ gas?: bigint;
1219
+ gasPrice?: bigint;
1220
+ maxFeePerGas?: bigint;
1221
+ maxPriorityFeePerGas?: bigint;
1222
+ nonce?: number;
1223
+ value?: bigint;
1224
+ }): Promise<boolean> {
1225
+ return contract.simulate.approve([spender, amount] as const, options) as Promise<boolean>;
1226
+ },
1227
+ /**
1228
+ * Simulate burn
1229
+ * Returns gas estimate and result without sending transaction
1230
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1231
+ */
1232
+ async burn(from: `0x${string}`, amount: bigint, options?: {
1233
+ accessList?: import('viem').AccessList;
1234
+ authorizationList?: import('viem').AuthorizationList;
1235
+ chain?: import('viem').Chain | null;
1236
+ dataSuffix?: `0x${string}`;
1237
+ gas?: bigint;
1238
+ gasPrice?: bigint;
1239
+ maxFeePerGas?: bigint;
1240
+ maxPriorityFeePerGas?: bigint;
1241
+ nonce?: number;
1242
+ value?: bigint;
1243
+ }): Promise<void> {
1244
+ return contract.simulate.burn([from, amount] as const, options) as Promise<void>;
1245
+ },
1246
+ /**
1247
+ * Simulate cancelOwnershipHandover
1248
+ * Returns gas estimate and result without sending transaction
1249
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1250
+ */
1251
+ async cancelOwnershipHandover(options?: {
1252
+ accessList?: import('viem').AccessList;
1253
+ authorizationList?: import('viem').AuthorizationList;
1254
+ chain?: import('viem').Chain | null;
1255
+ dataSuffix?: `0x${string}`;
1256
+ gas?: bigint;
1257
+ gasPrice?: bigint;
1258
+ maxFeePerGas?: bigint;
1259
+ maxPriorityFeePerGas?: bigint;
1260
+ nonce?: number;
1261
+ value?: bigint;
1262
+ }): Promise<void> {
1263
+ return contract.simulate.cancelOwnershipHandover(options) as Promise<void>;
1264
+ },
1265
+ /**
1266
+ * Simulate completeOwnershipHandover
1267
+ * Returns gas estimate and result without sending transaction
1268
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1269
+ */
1270
+ async completeOwnershipHandover(pendingOwner: `0x${string}`, options?: {
1271
+ accessList?: import('viem').AccessList;
1272
+ authorizationList?: import('viem').AuthorizationList;
1273
+ chain?: import('viem').Chain | null;
1274
+ dataSuffix?: `0x${string}`;
1275
+ gas?: bigint;
1276
+ gasPrice?: bigint;
1277
+ maxFeePerGas?: bigint;
1278
+ maxPriorityFeePerGas?: bigint;
1279
+ nonce?: number;
1280
+ value?: bigint;
1281
+ }): Promise<void> {
1282
+ return contract.simulate.completeOwnershipHandover([pendingOwner] as const, options) as Promise<void>;
1283
+ },
1284
+ /**
1285
+ * Simulate mint
1286
+ * Returns gas estimate and result without sending transaction
1287
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1288
+ */
1289
+ async mint(to: `0x${string}`, amount: bigint, options?: {
1290
+ accessList?: import('viem').AccessList;
1291
+ authorizationList?: import('viem').AuthorizationList;
1292
+ chain?: import('viem').Chain | null;
1293
+ dataSuffix?: `0x${string}`;
1294
+ gas?: bigint;
1295
+ gasPrice?: bigint;
1296
+ maxFeePerGas?: bigint;
1297
+ maxPriorityFeePerGas?: bigint;
1298
+ nonce?: number;
1299
+ value?: bigint;
1300
+ }): Promise<void> {
1301
+ return contract.simulate.mint([to, amount] as const, options) as Promise<void>;
1302
+ },
1303
+ /**
1304
+ * Simulate mintLaunchInventory
1305
+ * Returns gas estimate and result without sending transaction
1306
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1307
+ */
1308
+ async mintLaunchInventory(to: `0x${string}`, options?: {
1309
+ accessList?: import('viem').AccessList;
1310
+ authorizationList?: import('viem').AuthorizationList;
1311
+ chain?: import('viem').Chain | null;
1312
+ dataSuffix?: `0x${string}`;
1313
+ gas?: bigint;
1314
+ gasPrice?: bigint;
1315
+ maxFeePerGas?: bigint;
1316
+ maxPriorityFeePerGas?: bigint;
1317
+ nonce?: number;
1318
+ value?: bigint;
1319
+ }): Promise<void> {
1320
+ return contract.simulate.mintLaunchInventory([to] as const, options) as Promise<void>;
1321
+ },
1322
+ /**
1323
+ * Simulate permit
1324
+ * Returns gas estimate and result without sending transaction
1325
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1326
+ */
1327
+ async permit(owner: `0x${string}`, spender: `0x${string}`, value: bigint, deadline: bigint, v: bigint, r: `0x${string}`, s: `0x${string}`, options?: {
1328
+ accessList?: import('viem').AccessList;
1329
+ authorizationList?: import('viem').AuthorizationList;
1330
+ chain?: import('viem').Chain | null;
1331
+ dataSuffix?: `0x${string}`;
1332
+ gas?: bigint;
1333
+ gasPrice?: bigint;
1334
+ maxFeePerGas?: bigint;
1335
+ maxPriorityFeePerGas?: bigint;
1336
+ nonce?: number;
1337
+ value?: bigint;
1338
+ }): Promise<void> {
1339
+ return contract.simulate.permit([owner, spender, value, deadline, v, r, s] as const, options) as Promise<void>;
1340
+ },
1341
+ /**
1342
+ * Simulate renounceOwnership
1343
+ * Returns gas estimate and result without sending transaction
1344
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1345
+ */
1346
+ async renounceOwnership(options?: {
1347
+ accessList?: import('viem').AccessList;
1348
+ authorizationList?: import('viem').AuthorizationList;
1349
+ chain?: import('viem').Chain | null;
1350
+ dataSuffix?: `0x${string}`;
1351
+ gas?: bigint;
1352
+ gasPrice?: bigint;
1353
+ maxFeePerGas?: bigint;
1354
+ maxPriorityFeePerGas?: bigint;
1355
+ nonce?: number;
1356
+ value?: bigint;
1357
+ }): Promise<void> {
1358
+ return contract.simulate.renounceOwnership(options) as Promise<void>;
1359
+ },
1360
+ /**
1361
+ * Simulate requestOwnershipHandover
1362
+ * Returns gas estimate and result without sending transaction
1363
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1364
+ */
1365
+ async requestOwnershipHandover(options?: {
1366
+ accessList?: import('viem').AccessList;
1367
+ authorizationList?: import('viem').AuthorizationList;
1368
+ chain?: import('viem').Chain | null;
1369
+ dataSuffix?: `0x${string}`;
1370
+ gas?: bigint;
1371
+ gasPrice?: bigint;
1372
+ maxFeePerGas?: bigint;
1373
+ maxPriorityFeePerGas?: bigint;
1374
+ nonce?: number;
1375
+ value?: bigint;
1376
+ }): Promise<void> {
1377
+ return contract.simulate.requestOwnershipHandover(options) as Promise<void>;
1378
+ },
1379
+ /**
1380
+ * Simulate setMinter
1381
+ * Returns gas estimate and result without sending transaction
1382
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1383
+ */
1384
+ async setMinter(minter: `0x${string}`, allowed: boolean, options?: {
1385
+ accessList?: import('viem').AccessList;
1386
+ authorizationList?: import('viem').AuthorizationList;
1387
+ chain?: import('viem').Chain | null;
1388
+ dataSuffix?: `0x${string}`;
1389
+ gas?: bigint;
1390
+ gasPrice?: bigint;
1391
+ maxFeePerGas?: bigint;
1392
+ maxPriorityFeePerGas?: bigint;
1393
+ nonce?: number;
1394
+ value?: bigint;
1395
+ }): Promise<void> {
1396
+ return contract.simulate.setMinter([minter, allowed] as const, options) as Promise<void>;
1397
+ },
1398
+ /**
1399
+ * Simulate transfer
1400
+ * Returns gas estimate and result without sending transaction
1401
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1402
+ */
1403
+ async transfer(to: `0x${string}`, amount: bigint, options?: {
1404
+ accessList?: import('viem').AccessList;
1405
+ authorizationList?: import('viem').AuthorizationList;
1406
+ chain?: import('viem').Chain | null;
1407
+ dataSuffix?: `0x${string}`;
1408
+ gas?: bigint;
1409
+ gasPrice?: bigint;
1410
+ maxFeePerGas?: bigint;
1411
+ maxPriorityFeePerGas?: bigint;
1412
+ nonce?: number;
1413
+ value?: bigint;
1414
+ }): Promise<boolean> {
1415
+ return contract.simulate.transfer([to, amount] as const, options) as Promise<boolean>;
1416
+ },
1417
+ /**
1418
+ * Simulate transferFrom
1419
+ * Returns gas estimate and result without sending transaction
1420
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1421
+ */
1422
+ async transferFrom(from: `0x${string}`, to: `0x${string}`, amount: bigint, options?: {
1423
+ accessList?: import('viem').AccessList;
1424
+ authorizationList?: import('viem').AuthorizationList;
1425
+ chain?: import('viem').Chain | null;
1426
+ dataSuffix?: `0x${string}`;
1427
+ gas?: bigint;
1428
+ gasPrice?: bigint;
1429
+ maxFeePerGas?: bigint;
1430
+ maxPriorityFeePerGas?: bigint;
1431
+ nonce?: number;
1432
+ value?: bigint;
1433
+ }): Promise<boolean> {
1434
+ return contract.simulate.transferFrom([from, to, amount] as const, options) as Promise<boolean>;
1435
+ },
1436
+ /**
1437
+ * Simulate transferOwnership
1438
+ * Returns gas estimate and result without sending transaction
1439
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1440
+ */
1441
+ async transferOwnership(newOwner: `0x${string}`, options?: {
1442
+ accessList?: import('viem').AccessList;
1443
+ authorizationList?: import('viem').AuthorizationList;
1444
+ chain?: import('viem').Chain | null;
1445
+ dataSuffix?: `0x${string}`;
1446
+ gas?: bigint;
1447
+ gasPrice?: bigint;
1448
+ maxFeePerGas?: bigint;
1449
+ maxPriorityFeePerGas?: bigint;
1450
+ nonce?: number;
1451
+ value?: bigint;
1452
+ }): Promise<void> {
1453
+ return contract.simulate.transferOwnership([newOwner] as const, options) as Promise<void>;
1454
+ }
1455
+ };
1456
+ }
1457
+
1458
+ /**
1459
+ * Watch contract events
1460
+ *
1461
+ * @example
1462
+ * // Watch all Transfer events
1463
+ * const unwatch = contract.watch.Transfer((event) => {
1464
+ * console.log('Transfer:', event);
1465
+ * });
1466
+ *
1467
+ * // Stop watching
1468
+ * unwatch();
1469
+ */
1470
+ get watch() {
1471
+ return {
1472
+ /**
1473
+ * Watch Approval events
1474
+ * @param callback Function to call when event is emitted
1475
+ * @param filter Optional filter for indexed parameters
1476
+ * @returns Unwatch function to stop listening
1477
+ */
1478
+ Approval: (callback: (event: { owner: `0x${string}`; spender: `0x${string}`; amount: bigint }) => void, filter?: { owner: `0x${string}`; spender: `0x${string}` }) => {
1479
+ return this.publicClient.watchContractEvent({
1480
+ address: this.contractAddress,
1481
+ abi: Slop_jsonAbi,
1482
+ eventName: 'Approval',
1483
+ args: filter,
1484
+ onLogs: (logs: any[]) => {
1485
+ logs.forEach((log: any) => {
1486
+ callback(log.args as any);
1487
+ });
1488
+ },
1489
+ }) as () => void;
1490
+ },
1491
+ /**
1492
+ * Watch LaunchInventoryMinted events
1493
+ * @param callback Function to call when event is emitted
1494
+ * @param filter Optional filter for indexed parameters
1495
+ * @returns Unwatch function to stop listening
1496
+ */
1497
+ LaunchInventoryMinted: (callback: (event: { to: `0x${string}`; amount: bigint }) => void, filter?: { to: `0x${string}` }) => {
1498
+ return this.publicClient.watchContractEvent({
1499
+ address: this.contractAddress,
1500
+ abi: Slop_jsonAbi,
1501
+ eventName: 'LaunchInventoryMinted',
1502
+ args: filter,
1503
+ onLogs: (logs: any[]) => {
1504
+ logs.forEach((log: any) => {
1505
+ callback(log.args as any);
1506
+ });
1507
+ },
1508
+ }) as () => void;
1509
+ },
1510
+ /**
1511
+ * Watch MinterUpdated events
1512
+ * @param callback Function to call when event is emitted
1513
+ * @param filter Optional filter for indexed parameters
1514
+ * @returns Unwatch function to stop listening
1515
+ */
1516
+ MinterUpdated: (callback: (event: { minter: `0x${string}`; allowed: boolean }) => void, filter?: { minter: `0x${string}` }) => {
1517
+ return this.publicClient.watchContractEvent({
1518
+ address: this.contractAddress,
1519
+ abi: Slop_jsonAbi,
1520
+ eventName: 'MinterUpdated',
1521
+ args: filter,
1522
+ onLogs: (logs: any[]) => {
1523
+ logs.forEach((log: any) => {
1524
+ callback(log.args as any);
1525
+ });
1526
+ },
1527
+ }) as () => void;
1528
+ },
1529
+ /**
1530
+ * Watch OwnershipHandoverCanceled events
1531
+ * @param callback Function to call when event is emitted
1532
+ * @param filter Optional filter for indexed parameters
1533
+ * @returns Unwatch function to stop listening
1534
+ */
1535
+ OwnershipHandoverCanceled: (callback: (event: { pendingOwner: `0x${string}` }) => void, filter?: { pendingOwner: `0x${string}` }) => {
1536
+ return this.publicClient.watchContractEvent({
1537
+ address: this.contractAddress,
1538
+ abi: Slop_jsonAbi,
1539
+ eventName: 'OwnershipHandoverCanceled',
1540
+ args: filter,
1541
+ onLogs: (logs: any[]) => {
1542
+ logs.forEach((log: any) => {
1543
+ callback(log.args as any);
1544
+ });
1545
+ },
1546
+ }) as () => void;
1547
+ },
1548
+ /**
1549
+ * Watch OwnershipHandoverRequested events
1550
+ * @param callback Function to call when event is emitted
1551
+ * @param filter Optional filter for indexed parameters
1552
+ * @returns Unwatch function to stop listening
1553
+ */
1554
+ OwnershipHandoverRequested: (callback: (event: { pendingOwner: `0x${string}` }) => void, filter?: { pendingOwner: `0x${string}` }) => {
1555
+ return this.publicClient.watchContractEvent({
1556
+ address: this.contractAddress,
1557
+ abi: Slop_jsonAbi,
1558
+ eventName: 'OwnershipHandoverRequested',
1559
+ args: filter,
1560
+ onLogs: (logs: any[]) => {
1561
+ logs.forEach((log: any) => {
1562
+ callback(log.args as any);
1563
+ });
1564
+ },
1565
+ }) as () => void;
1566
+ },
1567
+ /**
1568
+ * Watch OwnershipTransferred events
1569
+ * @param callback Function to call when event is emitted
1570
+ * @param filter Optional filter for indexed parameters
1571
+ * @returns Unwatch function to stop listening
1572
+ */
1573
+ OwnershipTransferred: (callback: (event: { oldOwner: `0x${string}`; newOwner: `0x${string}` }) => void, filter?: { oldOwner: `0x${string}`; newOwner: `0x${string}` }) => {
1574
+ return this.publicClient.watchContractEvent({
1575
+ address: this.contractAddress,
1576
+ abi: Slop_jsonAbi,
1577
+ eventName: 'OwnershipTransferred',
1578
+ args: filter,
1579
+ onLogs: (logs: any[]) => {
1580
+ logs.forEach((log: any) => {
1581
+ callback(log.args as any);
1582
+ });
1583
+ },
1584
+ }) as () => void;
1585
+ },
1586
+ /**
1587
+ * Watch Transfer events
1588
+ * @param callback Function to call when event is emitted
1589
+ * @param filter Optional filter for indexed parameters
1590
+ * @returns Unwatch function to stop listening
1591
+ */
1592
+ Transfer: (callback: (event: { from: `0x${string}`; to: `0x${string}`; amount: bigint }) => void, filter?: { from: `0x${string}`; to: `0x${string}` }) => {
1593
+ return this.publicClient.watchContractEvent({
1594
+ address: this.contractAddress,
1595
+ abi: Slop_jsonAbi,
1596
+ eventName: 'Transfer',
1597
+ args: filter,
1598
+ onLogs: (logs: any[]) => {
1599
+ logs.forEach((log: any) => {
1600
+ callback(log.args as any);
1601
+ });
1602
+ },
1603
+ }) as () => void;
1604
+ }
1605
+ };
1606
+ }
1607
+ }