@gitmyabi/factorynft 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,2049 @@
1
+ import type { Abi, Address, PublicClient, WalletClient, GetContractReturnType } from 'viem';
2
+ import { getContract } from 'viem';
3
+
4
+ /**
5
+ * FactoryNFT_json ABI
6
+ *
7
+ * This ABI is typed using viem's type system for full type safety.
8
+ */
9
+ export const FactoryNFT_jsonAbi = [
10
+ {
11
+ "inputs": [
12
+ {
13
+ "internalType": "contract IERC20",
14
+ "name": "huntToken_",
15
+ "type": "address"
16
+ },
17
+ {
18
+ "internalType": "address",
19
+ "name": "initialOwner",
20
+ "type": "address"
21
+ },
22
+ {
23
+ "internalType": "address",
24
+ "name": "seedOwner",
25
+ "type": "address"
26
+ },
27
+ {
28
+ "internalType": "string",
29
+ "name": "uri_",
30
+ "type": "string"
31
+ },
32
+ {
33
+ "internalType": "address",
34
+ "name": "royaltyOperator_",
35
+ "type": "address"
36
+ }
37
+ ],
38
+ "stateMutability": "nonpayable",
39
+ "type": "constructor"
40
+ },
41
+ {
42
+ "inputs": [
43
+ {
44
+ "internalType": "uint256",
45
+ "name": "actual",
46
+ "type": "uint256"
47
+ },
48
+ {
49
+ "internalType": "uint256",
50
+ "name": "minimum",
51
+ "type": "uint256"
52
+ }
53
+ ],
54
+ "name": "BurnProceedsTooLow",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [
59
+ {
60
+ "internalType": "address",
61
+ "name": "sender",
62
+ "type": "address"
63
+ },
64
+ {
65
+ "internalType": "uint256",
66
+ "name": "balance",
67
+ "type": "uint256"
68
+ },
69
+ {
70
+ "internalType": "uint256",
71
+ "name": "needed",
72
+ "type": "uint256"
73
+ },
74
+ {
75
+ "internalType": "uint256",
76
+ "name": "tokenId",
77
+ "type": "uint256"
78
+ }
79
+ ],
80
+ "name": "ERC1155InsufficientBalance",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [
85
+ {
86
+ "internalType": "address",
87
+ "name": "approver",
88
+ "type": "address"
89
+ }
90
+ ],
91
+ "name": "ERC1155InvalidApprover",
92
+ "type": "error"
93
+ },
94
+ {
95
+ "inputs": [
96
+ {
97
+ "internalType": "uint256",
98
+ "name": "idsLength",
99
+ "type": "uint256"
100
+ },
101
+ {
102
+ "internalType": "uint256",
103
+ "name": "valuesLength",
104
+ "type": "uint256"
105
+ }
106
+ ],
107
+ "name": "ERC1155InvalidArrayLength",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [
112
+ {
113
+ "internalType": "address",
114
+ "name": "operator",
115
+ "type": "address"
116
+ }
117
+ ],
118
+ "name": "ERC1155InvalidOperator",
119
+ "type": "error"
120
+ },
121
+ {
122
+ "inputs": [
123
+ {
124
+ "internalType": "address",
125
+ "name": "receiver",
126
+ "type": "address"
127
+ }
128
+ ],
129
+ "name": "ERC1155InvalidReceiver",
130
+ "type": "error"
131
+ },
132
+ {
133
+ "inputs": [
134
+ {
135
+ "internalType": "address",
136
+ "name": "sender",
137
+ "type": "address"
138
+ }
139
+ ],
140
+ "name": "ERC1155InvalidSender",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "inputs": [
145
+ {
146
+ "internalType": "address",
147
+ "name": "operator",
148
+ "type": "address"
149
+ },
150
+ {
151
+ "internalType": "address",
152
+ "name": "owner",
153
+ "type": "address"
154
+ }
155
+ ],
156
+ "name": "ERC1155MissingApprovalForAll",
157
+ "type": "error"
158
+ },
159
+ {
160
+ "inputs": [
161
+ {
162
+ "internalType": "uint256",
163
+ "name": "numerator",
164
+ "type": "uint256"
165
+ },
166
+ {
167
+ "internalType": "uint256",
168
+ "name": "denominator",
169
+ "type": "uint256"
170
+ }
171
+ ],
172
+ "name": "ERC2981InvalidDefaultRoyalty",
173
+ "type": "error"
174
+ },
175
+ {
176
+ "inputs": [
177
+ {
178
+ "internalType": "address",
179
+ "name": "receiver",
180
+ "type": "address"
181
+ }
182
+ ],
183
+ "name": "ERC2981InvalidDefaultRoyaltyReceiver",
184
+ "type": "error"
185
+ },
186
+ {
187
+ "inputs": [
188
+ {
189
+ "internalType": "uint256",
190
+ "name": "tokenId",
191
+ "type": "uint256"
192
+ },
193
+ {
194
+ "internalType": "uint256",
195
+ "name": "numerator",
196
+ "type": "uint256"
197
+ },
198
+ {
199
+ "internalType": "uint256",
200
+ "name": "denominator",
201
+ "type": "uint256"
202
+ }
203
+ ],
204
+ "name": "ERC2981InvalidTokenRoyalty",
205
+ "type": "error"
206
+ },
207
+ {
208
+ "inputs": [
209
+ {
210
+ "internalType": "uint256",
211
+ "name": "tokenId",
212
+ "type": "uint256"
213
+ },
214
+ {
215
+ "internalType": "address",
216
+ "name": "receiver",
217
+ "type": "address"
218
+ }
219
+ ],
220
+ "name": "ERC2981InvalidTokenRoyaltyReceiver",
221
+ "type": "error"
222
+ },
223
+ {
224
+ "inputs": [],
225
+ "name": "InexactHuntTransfer",
226
+ "type": "error"
227
+ },
228
+ {
229
+ "inputs": [],
230
+ "name": "InvalidAddress",
231
+ "type": "error"
232
+ },
233
+ {
234
+ "inputs": [],
235
+ "name": "InvalidAmount",
236
+ "type": "error"
237
+ },
238
+ {
239
+ "inputs": [],
240
+ "name": "MinimumSupply",
241
+ "type": "error"
242
+ },
243
+ {
244
+ "inputs": [
245
+ {
246
+ "internalType": "uint256",
247
+ "name": "required",
248
+ "type": "uint256"
249
+ },
250
+ {
251
+ "internalType": "uint256",
252
+ "name": "maximum",
253
+ "type": "uint256"
254
+ }
255
+ ],
256
+ "name": "MintPriceExceeded",
257
+ "type": "error"
258
+ },
259
+ {
260
+ "inputs": [
261
+ {
262
+ "internalType": "address",
263
+ "name": "owner",
264
+ "type": "address"
265
+ }
266
+ ],
267
+ "name": "OwnableInvalidOwner",
268
+ "type": "error"
269
+ },
270
+ {
271
+ "inputs": [
272
+ {
273
+ "internalType": "address",
274
+ "name": "account",
275
+ "type": "address"
276
+ }
277
+ ],
278
+ "name": "OwnableUnauthorizedAccount",
279
+ "type": "error"
280
+ },
281
+ {
282
+ "inputs": [],
283
+ "name": "ReentrancyGuardReentrantCall",
284
+ "type": "error"
285
+ },
286
+ {
287
+ "inputs": [
288
+ {
289
+ "internalType": "address",
290
+ "name": "token",
291
+ "type": "address"
292
+ }
293
+ ],
294
+ "name": "SafeERC20FailedOperation",
295
+ "type": "error"
296
+ },
297
+ {
298
+ "inputs": [
299
+ {
300
+ "internalType": "uint256",
301
+ "name": "actual",
302
+ "type": "uint256"
303
+ },
304
+ {
305
+ "internalType": "uint256",
306
+ "name": "expected",
307
+ "type": "uint256"
308
+ }
309
+ ],
310
+ "name": "SupplyChanged",
311
+ "type": "error"
312
+ },
313
+ {
314
+ "anonymous": false,
315
+ "inputs": [
316
+ {
317
+ "indexed": true,
318
+ "internalType": "address",
319
+ "name": "account",
320
+ "type": "address"
321
+ },
322
+ {
323
+ "indexed": true,
324
+ "internalType": "address",
325
+ "name": "operator",
326
+ "type": "address"
327
+ },
328
+ {
329
+ "indexed": false,
330
+ "internalType": "bool",
331
+ "name": "approved",
332
+ "type": "bool"
333
+ }
334
+ ],
335
+ "name": "ApprovalForAll",
336
+ "type": "event"
337
+ },
338
+ {
339
+ "anonymous": false,
340
+ "inputs": [
341
+ {
342
+ "indexed": true,
343
+ "internalType": "address",
344
+ "name": "depositor",
345
+ "type": "address"
346
+ },
347
+ {
348
+ "indexed": false,
349
+ "internalType": "uint256",
350
+ "name": "huntIn",
351
+ "type": "uint256"
352
+ },
353
+ {
354
+ "indexed": false,
355
+ "internalType": "uint256",
356
+ "name": "supply",
357
+ "type": "uint256"
358
+ }
359
+ ],
360
+ "name": "Deposited",
361
+ "type": "event"
362
+ },
363
+ {
364
+ "anonymous": false,
365
+ "inputs": [
366
+ {
367
+ "indexed": true,
368
+ "internalType": "address",
369
+ "name": "payer",
370
+ "type": "address"
371
+ },
372
+ {
373
+ "indexed": true,
374
+ "internalType": "address",
375
+ "name": "receiver",
376
+ "type": "address"
377
+ },
378
+ {
379
+ "indexed": false,
380
+ "internalType": "uint256",
381
+ "name": "amount",
382
+ "type": "uint256"
383
+ },
384
+ {
385
+ "indexed": false,
386
+ "internalType": "uint256",
387
+ "name": "huntIn",
388
+ "type": "uint256"
389
+ }
390
+ ],
391
+ "name": "Minted",
392
+ "type": "event"
393
+ },
394
+ {
395
+ "anonymous": false,
396
+ "inputs": [
397
+ {
398
+ "indexed": true,
399
+ "internalType": "address",
400
+ "name": "previousOwner",
401
+ "type": "address"
402
+ },
403
+ {
404
+ "indexed": true,
405
+ "internalType": "address",
406
+ "name": "newOwner",
407
+ "type": "address"
408
+ }
409
+ ],
410
+ "name": "OwnershipTransferStarted",
411
+ "type": "event"
412
+ },
413
+ {
414
+ "anonymous": false,
415
+ "inputs": [
416
+ {
417
+ "indexed": true,
418
+ "internalType": "address",
419
+ "name": "previousOwner",
420
+ "type": "address"
421
+ },
422
+ {
423
+ "indexed": true,
424
+ "internalType": "address",
425
+ "name": "newOwner",
426
+ "type": "address"
427
+ }
428
+ ],
429
+ "name": "OwnershipTransferred",
430
+ "type": "event"
431
+ },
432
+ {
433
+ "anonymous": false,
434
+ "inputs": [
435
+ {
436
+ "indexed": true,
437
+ "internalType": "address",
438
+ "name": "holder",
439
+ "type": "address"
440
+ },
441
+ {
442
+ "indexed": false,
443
+ "internalType": "uint256",
444
+ "name": "amount",
445
+ "type": "uint256"
446
+ },
447
+ {
448
+ "indexed": false,
449
+ "internalType": "uint256",
450
+ "name": "huntOut",
451
+ "type": "uint256"
452
+ },
453
+ {
454
+ "indexed": false,
455
+ "internalType": "uint256",
456
+ "name": "retainedFee",
457
+ "type": "uint256"
458
+ }
459
+ ],
460
+ "name": "Redeemed",
461
+ "type": "event"
462
+ },
463
+ {
464
+ "anonymous": false,
465
+ "inputs": [
466
+ {
467
+ "indexed": true,
468
+ "internalType": "address",
469
+ "name": "previousOperator",
470
+ "type": "address"
471
+ },
472
+ {
473
+ "indexed": true,
474
+ "internalType": "address",
475
+ "name": "newOperator",
476
+ "type": "address"
477
+ }
478
+ ],
479
+ "name": "RoyaltyOperatorUpdated",
480
+ "type": "event"
481
+ },
482
+ {
483
+ "anonymous": false,
484
+ "inputs": [
485
+ {
486
+ "indexed": true,
487
+ "internalType": "address",
488
+ "name": "operator",
489
+ "type": "address"
490
+ },
491
+ {
492
+ "indexed": true,
493
+ "internalType": "address",
494
+ "name": "from",
495
+ "type": "address"
496
+ },
497
+ {
498
+ "indexed": true,
499
+ "internalType": "address",
500
+ "name": "to",
501
+ "type": "address"
502
+ },
503
+ {
504
+ "indexed": false,
505
+ "internalType": "uint256[]",
506
+ "name": "ids",
507
+ "type": "uint256[]"
508
+ },
509
+ {
510
+ "indexed": false,
511
+ "internalType": "uint256[]",
512
+ "name": "values",
513
+ "type": "uint256[]"
514
+ }
515
+ ],
516
+ "name": "TransferBatch",
517
+ "type": "event"
518
+ },
519
+ {
520
+ "anonymous": false,
521
+ "inputs": [
522
+ {
523
+ "indexed": true,
524
+ "internalType": "address",
525
+ "name": "operator",
526
+ "type": "address"
527
+ },
528
+ {
529
+ "indexed": true,
530
+ "internalType": "address",
531
+ "name": "from",
532
+ "type": "address"
533
+ },
534
+ {
535
+ "indexed": true,
536
+ "internalType": "address",
537
+ "name": "to",
538
+ "type": "address"
539
+ },
540
+ {
541
+ "indexed": false,
542
+ "internalType": "uint256",
543
+ "name": "id",
544
+ "type": "uint256"
545
+ },
546
+ {
547
+ "indexed": false,
548
+ "internalType": "uint256",
549
+ "name": "value",
550
+ "type": "uint256"
551
+ }
552
+ ],
553
+ "name": "TransferSingle",
554
+ "type": "event"
555
+ },
556
+ {
557
+ "anonymous": false,
558
+ "inputs": [
559
+ {
560
+ "indexed": false,
561
+ "internalType": "string",
562
+ "name": "value",
563
+ "type": "string"
564
+ },
565
+ {
566
+ "indexed": true,
567
+ "internalType": "uint256",
568
+ "name": "id",
569
+ "type": "uint256"
570
+ }
571
+ ],
572
+ "name": "URI",
573
+ "type": "event"
574
+ },
575
+ {
576
+ "inputs": [],
577
+ "name": "BURN_FEE_BPS",
578
+ "outputs": [
579
+ {
580
+ "internalType": "uint256",
581
+ "name": "",
582
+ "type": "uint256"
583
+ }
584
+ ],
585
+ "stateMutability": "view",
586
+ "type": "function"
587
+ },
588
+ {
589
+ "inputs": [],
590
+ "name": "INITIAL_NAV",
591
+ "outputs": [
592
+ {
593
+ "internalType": "uint256",
594
+ "name": "",
595
+ "type": "uint256"
596
+ }
597
+ ],
598
+ "stateMutability": "view",
599
+ "type": "function"
600
+ },
601
+ {
602
+ "inputs": [],
603
+ "name": "ROYALTY_BPS",
604
+ "outputs": [
605
+ {
606
+ "internalType": "uint96",
607
+ "name": "",
608
+ "type": "uint96"
609
+ }
610
+ ],
611
+ "stateMutability": "view",
612
+ "type": "function"
613
+ },
614
+ {
615
+ "inputs": [],
616
+ "name": "TOKEN_ID",
617
+ "outputs": [
618
+ {
619
+ "internalType": "uint256",
620
+ "name": "",
621
+ "type": "uint256"
622
+ }
623
+ ],
624
+ "stateMutability": "view",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [],
629
+ "name": "acceptOwnership",
630
+ "outputs": [],
631
+ "stateMutability": "nonpayable",
632
+ "type": "function"
633
+ },
634
+ {
635
+ "inputs": [
636
+ {
637
+ "internalType": "address",
638
+ "name": "account",
639
+ "type": "address"
640
+ },
641
+ {
642
+ "internalType": "uint256",
643
+ "name": "id",
644
+ "type": "uint256"
645
+ }
646
+ ],
647
+ "name": "balanceOf",
648
+ "outputs": [
649
+ {
650
+ "internalType": "uint256",
651
+ "name": "",
652
+ "type": "uint256"
653
+ }
654
+ ],
655
+ "stateMutability": "view",
656
+ "type": "function"
657
+ },
658
+ {
659
+ "inputs": [
660
+ {
661
+ "internalType": "address[]",
662
+ "name": "accounts",
663
+ "type": "address[]"
664
+ },
665
+ {
666
+ "internalType": "uint256[]",
667
+ "name": "ids",
668
+ "type": "uint256[]"
669
+ }
670
+ ],
671
+ "name": "balanceOfBatch",
672
+ "outputs": [
673
+ {
674
+ "internalType": "uint256[]",
675
+ "name": "",
676
+ "type": "uint256[]"
677
+ }
678
+ ],
679
+ "stateMutability": "view",
680
+ "type": "function"
681
+ },
682
+ {
683
+ "inputs": [
684
+ {
685
+ "internalType": "uint256",
686
+ "name": "amount",
687
+ "type": "uint256"
688
+ },
689
+ {
690
+ "internalType": "uint256",
691
+ "name": "minHuntOut",
692
+ "type": "uint256"
693
+ }
694
+ ],
695
+ "name": "burn",
696
+ "outputs": [
697
+ {
698
+ "internalType": "uint256",
699
+ "name": "huntOut",
700
+ "type": "uint256"
701
+ }
702
+ ],
703
+ "stateMutability": "nonpayable",
704
+ "type": "function"
705
+ },
706
+ {
707
+ "inputs": [
708
+ {
709
+ "internalType": "uint256",
710
+ "name": "amount",
711
+ "type": "uint256"
712
+ },
713
+ {
714
+ "internalType": "uint256",
715
+ "name": "expectedSupply",
716
+ "type": "uint256"
717
+ }
718
+ ],
719
+ "name": "deposit",
720
+ "outputs": [],
721
+ "stateMutability": "nonpayable",
722
+ "type": "function"
723
+ },
724
+ {
725
+ "inputs": [
726
+ {
727
+ "internalType": "uint256",
728
+ "name": "id",
729
+ "type": "uint256"
730
+ }
731
+ ],
732
+ "name": "exists",
733
+ "outputs": [
734
+ {
735
+ "internalType": "bool",
736
+ "name": "",
737
+ "type": "bool"
738
+ }
739
+ ],
740
+ "stateMutability": "view",
741
+ "type": "function"
742
+ },
743
+ {
744
+ "inputs": [],
745
+ "name": "huntToken",
746
+ "outputs": [
747
+ {
748
+ "internalType": "contract IERC20",
749
+ "name": "",
750
+ "type": "address"
751
+ }
752
+ ],
753
+ "stateMutability": "view",
754
+ "type": "function"
755
+ },
756
+ {
757
+ "inputs": [
758
+ {
759
+ "internalType": "address",
760
+ "name": "account",
761
+ "type": "address"
762
+ },
763
+ {
764
+ "internalType": "address",
765
+ "name": "operator",
766
+ "type": "address"
767
+ }
768
+ ],
769
+ "name": "isApprovedForAll",
770
+ "outputs": [
771
+ {
772
+ "internalType": "bool",
773
+ "name": "",
774
+ "type": "bool"
775
+ }
776
+ ],
777
+ "stateMutability": "view",
778
+ "type": "function"
779
+ },
780
+ {
781
+ "inputs": [
782
+ {
783
+ "internalType": "uint256",
784
+ "name": "amount",
785
+ "type": "uint256"
786
+ },
787
+ {
788
+ "internalType": "uint256",
789
+ "name": "maxHuntIn",
790
+ "type": "uint256"
791
+ },
792
+ {
793
+ "internalType": "address",
794
+ "name": "receiver",
795
+ "type": "address"
796
+ }
797
+ ],
798
+ "name": "mint",
799
+ "outputs": [
800
+ {
801
+ "internalType": "uint256",
802
+ "name": "huntIn",
803
+ "type": "uint256"
804
+ }
805
+ ],
806
+ "stateMutability": "nonpayable",
807
+ "type": "function"
808
+ },
809
+ {
810
+ "inputs": [],
811
+ "name": "navPerNFT",
812
+ "outputs": [
813
+ {
814
+ "internalType": "uint256",
815
+ "name": "",
816
+ "type": "uint256"
817
+ }
818
+ ],
819
+ "stateMutability": "view",
820
+ "type": "function"
821
+ },
822
+ {
823
+ "inputs": [],
824
+ "name": "owner",
825
+ "outputs": [
826
+ {
827
+ "internalType": "address",
828
+ "name": "",
829
+ "type": "address"
830
+ }
831
+ ],
832
+ "stateMutability": "view",
833
+ "type": "function"
834
+ },
835
+ {
836
+ "inputs": [],
837
+ "name": "pendingOwner",
838
+ "outputs": [
839
+ {
840
+ "internalType": "address",
841
+ "name": "",
842
+ "type": "address"
843
+ }
844
+ ],
845
+ "stateMutability": "view",
846
+ "type": "function"
847
+ },
848
+ {
849
+ "inputs": [
850
+ {
851
+ "internalType": "uint256",
852
+ "name": "amount",
853
+ "type": "uint256"
854
+ }
855
+ ],
856
+ "name": "quoteBurn",
857
+ "outputs": [
858
+ {
859
+ "internalType": "uint256",
860
+ "name": "huntOut",
861
+ "type": "uint256"
862
+ }
863
+ ],
864
+ "stateMutability": "view",
865
+ "type": "function"
866
+ },
867
+ {
868
+ "inputs": [
869
+ {
870
+ "internalType": "uint256",
871
+ "name": "amount",
872
+ "type": "uint256"
873
+ }
874
+ ],
875
+ "name": "quoteMint",
876
+ "outputs": [
877
+ {
878
+ "internalType": "uint256",
879
+ "name": "huntIn",
880
+ "type": "uint256"
881
+ }
882
+ ],
883
+ "stateMutability": "view",
884
+ "type": "function"
885
+ },
886
+ {
887
+ "inputs": [],
888
+ "name": "renounceOwnership",
889
+ "outputs": [],
890
+ "stateMutability": "nonpayable",
891
+ "type": "function"
892
+ },
893
+ {
894
+ "inputs": [
895
+ {
896
+ "internalType": "uint256",
897
+ "name": "tokenId",
898
+ "type": "uint256"
899
+ },
900
+ {
901
+ "internalType": "uint256",
902
+ "name": "salePrice",
903
+ "type": "uint256"
904
+ }
905
+ ],
906
+ "name": "royaltyInfo",
907
+ "outputs": [
908
+ {
909
+ "internalType": "address",
910
+ "name": "receiver",
911
+ "type": "address"
912
+ },
913
+ {
914
+ "internalType": "uint256",
915
+ "name": "amount",
916
+ "type": "uint256"
917
+ }
918
+ ],
919
+ "stateMutability": "view",
920
+ "type": "function"
921
+ },
922
+ {
923
+ "inputs": [],
924
+ "name": "royaltyOperator",
925
+ "outputs": [
926
+ {
927
+ "internalType": "address",
928
+ "name": "",
929
+ "type": "address"
930
+ }
931
+ ],
932
+ "stateMutability": "view",
933
+ "type": "function"
934
+ },
935
+ {
936
+ "inputs": [
937
+ {
938
+ "internalType": "address",
939
+ "name": "from",
940
+ "type": "address"
941
+ },
942
+ {
943
+ "internalType": "address",
944
+ "name": "to",
945
+ "type": "address"
946
+ },
947
+ {
948
+ "internalType": "uint256[]",
949
+ "name": "ids",
950
+ "type": "uint256[]"
951
+ },
952
+ {
953
+ "internalType": "uint256[]",
954
+ "name": "values",
955
+ "type": "uint256[]"
956
+ },
957
+ {
958
+ "internalType": "bytes",
959
+ "name": "data",
960
+ "type": "bytes"
961
+ }
962
+ ],
963
+ "name": "safeBatchTransferFrom",
964
+ "outputs": [],
965
+ "stateMutability": "nonpayable",
966
+ "type": "function"
967
+ },
968
+ {
969
+ "inputs": [
970
+ {
971
+ "internalType": "address",
972
+ "name": "from",
973
+ "type": "address"
974
+ },
975
+ {
976
+ "internalType": "address",
977
+ "name": "to",
978
+ "type": "address"
979
+ },
980
+ {
981
+ "internalType": "uint256",
982
+ "name": "id",
983
+ "type": "uint256"
984
+ },
985
+ {
986
+ "internalType": "uint256",
987
+ "name": "value",
988
+ "type": "uint256"
989
+ },
990
+ {
991
+ "internalType": "bytes",
992
+ "name": "data",
993
+ "type": "bytes"
994
+ }
995
+ ],
996
+ "name": "safeTransferFrom",
997
+ "outputs": [],
998
+ "stateMutability": "nonpayable",
999
+ "type": "function"
1000
+ },
1001
+ {
1002
+ "inputs": [
1003
+ {
1004
+ "internalType": "address",
1005
+ "name": "operator",
1006
+ "type": "address"
1007
+ },
1008
+ {
1009
+ "internalType": "bool",
1010
+ "name": "approved",
1011
+ "type": "bool"
1012
+ }
1013
+ ],
1014
+ "name": "setApprovalForAll",
1015
+ "outputs": [],
1016
+ "stateMutability": "nonpayable",
1017
+ "type": "function"
1018
+ },
1019
+ {
1020
+ "inputs": [
1021
+ {
1022
+ "internalType": "address",
1023
+ "name": "newOperator",
1024
+ "type": "address"
1025
+ }
1026
+ ],
1027
+ "name": "setRoyaltyOperator",
1028
+ "outputs": [],
1029
+ "stateMutability": "nonpayable",
1030
+ "type": "function"
1031
+ },
1032
+ {
1033
+ "inputs": [
1034
+ {
1035
+ "internalType": "string",
1036
+ "name": "newURI",
1037
+ "type": "string"
1038
+ }
1039
+ ],
1040
+ "name": "setURI",
1041
+ "outputs": [],
1042
+ "stateMutability": "nonpayable",
1043
+ "type": "function"
1044
+ },
1045
+ {
1046
+ "inputs": [
1047
+ {
1048
+ "internalType": "bytes4",
1049
+ "name": "interfaceId",
1050
+ "type": "bytes4"
1051
+ }
1052
+ ],
1053
+ "name": "supportsInterface",
1054
+ "outputs": [
1055
+ {
1056
+ "internalType": "bool",
1057
+ "name": "",
1058
+ "type": "bool"
1059
+ }
1060
+ ],
1061
+ "stateMutability": "view",
1062
+ "type": "function"
1063
+ },
1064
+ {
1065
+ "inputs": [],
1066
+ "name": "totalSupply",
1067
+ "outputs": [
1068
+ {
1069
+ "internalType": "uint256",
1070
+ "name": "",
1071
+ "type": "uint256"
1072
+ }
1073
+ ],
1074
+ "stateMutability": "view",
1075
+ "type": "function"
1076
+ },
1077
+ {
1078
+ "inputs": [
1079
+ {
1080
+ "internalType": "uint256",
1081
+ "name": "id",
1082
+ "type": "uint256"
1083
+ }
1084
+ ],
1085
+ "name": "totalSupply",
1086
+ "outputs": [
1087
+ {
1088
+ "internalType": "uint256",
1089
+ "name": "",
1090
+ "type": "uint256"
1091
+ }
1092
+ ],
1093
+ "stateMutability": "view",
1094
+ "type": "function"
1095
+ },
1096
+ {
1097
+ "inputs": [
1098
+ {
1099
+ "internalType": "address",
1100
+ "name": "newOwner",
1101
+ "type": "address"
1102
+ }
1103
+ ],
1104
+ "name": "transferOwnership",
1105
+ "outputs": [],
1106
+ "stateMutability": "nonpayable",
1107
+ "type": "function"
1108
+ },
1109
+ {
1110
+ "inputs": [
1111
+ {
1112
+ "internalType": "uint256",
1113
+ "name": "",
1114
+ "type": "uint256"
1115
+ }
1116
+ ],
1117
+ "name": "uri",
1118
+ "outputs": [
1119
+ {
1120
+ "internalType": "string",
1121
+ "name": "",
1122
+ "type": "string"
1123
+ }
1124
+ ],
1125
+ "stateMutability": "view",
1126
+ "type": "function"
1127
+ }
1128
+ ] as const satisfies Abi;
1129
+
1130
+ /**
1131
+ * Type-safe ABI for FactoryNFT_json
1132
+ */
1133
+ export type FactoryNFT_jsonAbi = typeof FactoryNFT_jsonAbi;
1134
+
1135
+ /**
1136
+ * Contract instance type for FactoryNFT_json
1137
+ */
1138
+ // Use any for contract type to avoid complex viem type issues
1139
+ // The runtime behavior is type-safe through viem's ABI typing
1140
+ export type FactoryNFT_jsonContract = any;
1141
+
1142
+ /**
1143
+ * FactoryNFT_json Contract Class
1144
+ *
1145
+ * Provides a class-based API similar to TypeChain for interacting with the contract.
1146
+ *
1147
+ * @example
1148
+ * ```typescript
1149
+ * import { createPublicClient, createWalletClient, http } from 'viem';
1150
+ * import { mainnet } from 'viem/chains';
1151
+ * import { FactoryNFT_json } from 'FactoryNFT_json';
1152
+ *
1153
+ * const publicClient = createPublicClient({ chain: mainnet, transport: http() });
1154
+ * const walletClient = createWalletClient({ chain: mainnet, transport: http() });
1155
+ *
1156
+ * const contract = new FactoryNFT_json('0x...', { publicClient, walletClient });
1157
+ *
1158
+ * // Read functions
1159
+ * const result = await contract.balanceOf('0x...');
1160
+ *
1161
+ * // Write functions
1162
+ * const hash = await contract.transfer('0x...', 1000n);
1163
+ *
1164
+ * // Simulate transactions (dry-run)
1165
+ * const simulation = await contract.simulate.transfer('0x...', 1000n);
1166
+ * console.log('Gas estimate:', simulation.request.gas);
1167
+ *
1168
+ * // Watch events
1169
+ * const unwatch = contract.watch.Transfer((event) => {
1170
+ * console.log('Transfer event:', event);
1171
+ * });
1172
+ * ```
1173
+ */
1174
+ export class FactoryNFT_json {
1175
+ private contract: FactoryNFT_jsonContract;
1176
+ private contractAddress: Address;
1177
+ private publicClient: PublicClient;
1178
+
1179
+ constructor(
1180
+ address: Address,
1181
+ clients: {
1182
+ publicClient: PublicClient;
1183
+ walletClient?: WalletClient;
1184
+ }
1185
+ ) {
1186
+ this.contractAddress = address;
1187
+ this.publicClient = clients.publicClient;
1188
+ this.contract = getContract({
1189
+ address,
1190
+ abi: FactoryNFT_jsonAbi,
1191
+ client: {
1192
+ public: clients.publicClient,
1193
+ wallet: clients.walletClient,
1194
+ },
1195
+ });
1196
+ }
1197
+
1198
+ /**
1199
+ * Get the contract address
1200
+ */
1201
+ get address(): Address {
1202
+ return this.contractAddress;
1203
+ }
1204
+
1205
+ /**
1206
+ * Get the underlying viem contract instance
1207
+ */
1208
+ getContract(): FactoryNFT_jsonContract {
1209
+ return this.contract;
1210
+ }
1211
+
1212
+ /**
1213
+ * BURN_FEE_BPS
1214
+ * view
1215
+ */
1216
+ async BURN_FEE_BPS(): Promise<bigint> {
1217
+ return this.contract.read.BURN_FEE_BPS() as Promise<bigint>;
1218
+ }
1219
+
1220
+ /**
1221
+ * INITIAL_NAV
1222
+ * view
1223
+ */
1224
+ async INITIAL_NAV(): Promise<bigint> {
1225
+ return this.contract.read.INITIAL_NAV() as Promise<bigint>;
1226
+ }
1227
+
1228
+ /**
1229
+ * ROYALTY_BPS
1230
+ * view
1231
+ */
1232
+ async ROYALTY_BPS(): Promise<bigint> {
1233
+ return this.contract.read.ROYALTY_BPS() as Promise<bigint>;
1234
+ }
1235
+
1236
+ /**
1237
+ * TOKEN_ID
1238
+ * view
1239
+ */
1240
+ async TOKEN_ID(): Promise<bigint> {
1241
+ return this.contract.read.TOKEN_ID() as Promise<bigint>;
1242
+ }
1243
+
1244
+ /**
1245
+ * balanceOf
1246
+ * view
1247
+ */
1248
+ async balanceOf(account: `0x${string}`, id: bigint): Promise<bigint> {
1249
+ return this.contract.read.balanceOf([account, id] as const) as Promise<bigint>;
1250
+ }
1251
+
1252
+ /**
1253
+ * balanceOfBatch
1254
+ * view
1255
+ */
1256
+ async balanceOfBatch(accounts: `0x${string}`[], ids: bigint[]): Promise<bigint[]> {
1257
+ return this.contract.read.balanceOfBatch([accounts, ids] as const) as Promise<bigint[]>;
1258
+ }
1259
+
1260
+ /**
1261
+ * exists
1262
+ * view
1263
+ */
1264
+ async exists(id: bigint): Promise<boolean> {
1265
+ return this.contract.read.exists([id] as const) as Promise<boolean>;
1266
+ }
1267
+
1268
+ /**
1269
+ * huntToken
1270
+ * view
1271
+ */
1272
+ async huntToken(): Promise<`0x${string}`> {
1273
+ return this.contract.read.huntToken() as Promise<`0x${string}`>;
1274
+ }
1275
+
1276
+ /**
1277
+ * isApprovedForAll
1278
+ * view
1279
+ */
1280
+ async isApprovedForAll(account: `0x${string}`, operator: `0x${string}`): Promise<boolean> {
1281
+ return this.contract.read.isApprovedForAll([account, operator] as const) as Promise<boolean>;
1282
+ }
1283
+
1284
+ /**
1285
+ * navPerNFT
1286
+ * view
1287
+ */
1288
+ async navPerNFT(): Promise<bigint> {
1289
+ return this.contract.read.navPerNFT() as Promise<bigint>;
1290
+ }
1291
+
1292
+ /**
1293
+ * owner
1294
+ * view
1295
+ */
1296
+ async owner(): Promise<`0x${string}`> {
1297
+ return this.contract.read.owner() as Promise<`0x${string}`>;
1298
+ }
1299
+
1300
+ /**
1301
+ * pendingOwner
1302
+ * view
1303
+ */
1304
+ async pendingOwner(): Promise<`0x${string}`> {
1305
+ return this.contract.read.pendingOwner() as Promise<`0x${string}`>;
1306
+ }
1307
+
1308
+ /**
1309
+ * quoteBurn
1310
+ * view
1311
+ */
1312
+ async quoteBurn(amount: bigint): Promise<bigint> {
1313
+ return this.contract.read.quoteBurn([amount] as const) as Promise<bigint>;
1314
+ }
1315
+
1316
+ /**
1317
+ * quoteMint
1318
+ * view
1319
+ */
1320
+ async quoteMint(amount: bigint): Promise<bigint> {
1321
+ return this.contract.read.quoteMint([amount] as const) as Promise<bigint>;
1322
+ }
1323
+
1324
+ /**
1325
+ * royaltyInfo
1326
+ * view
1327
+ */
1328
+ async royaltyInfo(tokenId: bigint, salePrice: bigint): Promise<[`0x${string}`, bigint]> {
1329
+ return this.contract.read.royaltyInfo([tokenId, salePrice] as const) as Promise<[`0x${string}`, bigint]>;
1330
+ }
1331
+
1332
+ /**
1333
+ * royaltyOperator
1334
+ * view
1335
+ */
1336
+ async royaltyOperator(): Promise<`0x${string}`> {
1337
+ return this.contract.read.royaltyOperator() as Promise<`0x${string}`>;
1338
+ }
1339
+
1340
+ /**
1341
+ * supportsInterface
1342
+ * view
1343
+ */
1344
+ async supportsInterface(interfaceId: `0x${string}`): Promise<boolean> {
1345
+ return this.contract.read.supportsInterface([interfaceId] as const) as Promise<boolean>;
1346
+ }
1347
+
1348
+ async totalSupply(): Promise<bigint>;
1349
+ async totalSupply(id: bigint): Promise<bigint>;
1350
+ async totalSupply(...args: any[]): Promise<any> {
1351
+ return this.contract.read.totalSupply(args as any) as Promise<any>;
1352
+ }
1353
+
1354
+ /**
1355
+ * uri
1356
+ * view
1357
+ */
1358
+ async uri(arg0: bigint): Promise<string> {
1359
+ return this.contract.read.uri([arg0] as const) as Promise<string>;
1360
+ }
1361
+
1362
+ /**
1363
+ * acceptOwnership
1364
+ * nonpayable
1365
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1366
+ */
1367
+ async acceptOwnership(options?: {
1368
+ accessList?: import('viem').AccessList;
1369
+ authorizationList?: import('viem').AuthorizationList;
1370
+ chain?: import('viem').Chain | null;
1371
+ dataSuffix?: `0x${string}`;
1372
+ gas?: bigint;
1373
+ gasPrice?: bigint;
1374
+ maxFeePerGas?: bigint;
1375
+ maxPriorityFeePerGas?: bigint;
1376
+ nonce?: number;
1377
+ value?: bigint;
1378
+ }): Promise<`0x${string}`> {
1379
+ if (!this.contract.write) {
1380
+ throw new Error('Wallet client is required for write operations');
1381
+ }
1382
+ return this.contract.write.acceptOwnership(options) as Promise<`0x${string}`>;
1383
+ }
1384
+
1385
+ /**
1386
+ * burn
1387
+ * nonpayable
1388
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1389
+ */
1390
+ async burn(amount: bigint, minHuntOut: bigint, options?: {
1391
+ accessList?: import('viem').AccessList;
1392
+ authorizationList?: import('viem').AuthorizationList;
1393
+ chain?: import('viem').Chain | null;
1394
+ dataSuffix?: `0x${string}`;
1395
+ gas?: bigint;
1396
+ gasPrice?: bigint;
1397
+ maxFeePerGas?: bigint;
1398
+ maxPriorityFeePerGas?: bigint;
1399
+ nonce?: number;
1400
+ value?: bigint;
1401
+ }): Promise<`0x${string}`> {
1402
+ if (!this.contract.write) {
1403
+ throw new Error('Wallet client is required for write operations');
1404
+ }
1405
+ return this.contract.write.burn([amount, minHuntOut] as const, options) as Promise<`0x${string}`>;
1406
+ }
1407
+
1408
+ /**
1409
+ * deposit
1410
+ * nonpayable
1411
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1412
+ */
1413
+ async deposit(amount: bigint, expectedSupply: bigint, options?: {
1414
+ accessList?: import('viem').AccessList;
1415
+ authorizationList?: import('viem').AuthorizationList;
1416
+ chain?: import('viem').Chain | null;
1417
+ dataSuffix?: `0x${string}`;
1418
+ gas?: bigint;
1419
+ gasPrice?: bigint;
1420
+ maxFeePerGas?: bigint;
1421
+ maxPriorityFeePerGas?: bigint;
1422
+ nonce?: number;
1423
+ value?: bigint;
1424
+ }): Promise<`0x${string}`> {
1425
+ if (!this.contract.write) {
1426
+ throw new Error('Wallet client is required for write operations');
1427
+ }
1428
+ return this.contract.write.deposit([amount, expectedSupply] as const, options) as Promise<`0x${string}`>;
1429
+ }
1430
+
1431
+ /**
1432
+ * mint
1433
+ * nonpayable
1434
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1435
+ */
1436
+ async mint(amount: bigint, maxHuntIn: bigint, receiver: `0x${string}`, options?: {
1437
+ accessList?: import('viem').AccessList;
1438
+ authorizationList?: import('viem').AuthorizationList;
1439
+ chain?: import('viem').Chain | null;
1440
+ dataSuffix?: `0x${string}`;
1441
+ gas?: bigint;
1442
+ gasPrice?: bigint;
1443
+ maxFeePerGas?: bigint;
1444
+ maxPriorityFeePerGas?: bigint;
1445
+ nonce?: number;
1446
+ value?: bigint;
1447
+ }): Promise<`0x${string}`> {
1448
+ if (!this.contract.write) {
1449
+ throw new Error('Wallet client is required for write operations');
1450
+ }
1451
+ return this.contract.write.mint([amount, maxHuntIn, receiver] as const, options) as Promise<`0x${string}`>;
1452
+ }
1453
+
1454
+ /**
1455
+ * renounceOwnership
1456
+ * nonpayable
1457
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1458
+ */
1459
+ async renounceOwnership(options?: {
1460
+ accessList?: import('viem').AccessList;
1461
+ authorizationList?: import('viem').AuthorizationList;
1462
+ chain?: import('viem').Chain | null;
1463
+ dataSuffix?: `0x${string}`;
1464
+ gas?: bigint;
1465
+ gasPrice?: bigint;
1466
+ maxFeePerGas?: bigint;
1467
+ maxPriorityFeePerGas?: bigint;
1468
+ nonce?: number;
1469
+ value?: bigint;
1470
+ }): Promise<`0x${string}`> {
1471
+ if (!this.contract.write) {
1472
+ throw new Error('Wallet client is required for write operations');
1473
+ }
1474
+ return this.contract.write.renounceOwnership(options) as Promise<`0x${string}`>;
1475
+ }
1476
+
1477
+ /**
1478
+ * safeBatchTransferFrom
1479
+ * nonpayable
1480
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1481
+ */
1482
+ async safeBatchTransferFrom(from: `0x${string}`, to: `0x${string}`, ids: bigint[], values: bigint[], data: `0x${string}`, options?: {
1483
+ accessList?: import('viem').AccessList;
1484
+ authorizationList?: import('viem').AuthorizationList;
1485
+ chain?: import('viem').Chain | null;
1486
+ dataSuffix?: `0x${string}`;
1487
+ gas?: bigint;
1488
+ gasPrice?: bigint;
1489
+ maxFeePerGas?: bigint;
1490
+ maxPriorityFeePerGas?: bigint;
1491
+ nonce?: number;
1492
+ value?: bigint;
1493
+ }): Promise<`0x${string}`> {
1494
+ if (!this.contract.write) {
1495
+ throw new Error('Wallet client is required for write operations');
1496
+ }
1497
+ return this.contract.write.safeBatchTransferFrom([from, to, ids, values, data] as const, options) as Promise<`0x${string}`>;
1498
+ }
1499
+
1500
+ /**
1501
+ * safeTransferFrom
1502
+ * nonpayable
1503
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1504
+ */
1505
+ async safeTransferFrom(from: `0x${string}`, to: `0x${string}`, id: bigint, value: bigint, data: `0x${string}`, options?: {
1506
+ accessList?: import('viem').AccessList;
1507
+ authorizationList?: import('viem').AuthorizationList;
1508
+ chain?: import('viem').Chain | null;
1509
+ dataSuffix?: `0x${string}`;
1510
+ gas?: bigint;
1511
+ gasPrice?: bigint;
1512
+ maxFeePerGas?: bigint;
1513
+ maxPriorityFeePerGas?: bigint;
1514
+ nonce?: number;
1515
+ value?: bigint;
1516
+ }): Promise<`0x${string}`> {
1517
+ if (!this.contract.write) {
1518
+ throw new Error('Wallet client is required for write operations');
1519
+ }
1520
+ return this.contract.write.safeTransferFrom([from, to, id, value, data] as const, options) as Promise<`0x${string}`>;
1521
+ }
1522
+
1523
+ /**
1524
+ * setApprovalForAll
1525
+ * nonpayable
1526
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1527
+ */
1528
+ async setApprovalForAll(operator: `0x${string}`, approved: boolean, options?: {
1529
+ accessList?: import('viem').AccessList;
1530
+ authorizationList?: import('viem').AuthorizationList;
1531
+ chain?: import('viem').Chain | null;
1532
+ dataSuffix?: `0x${string}`;
1533
+ gas?: bigint;
1534
+ gasPrice?: bigint;
1535
+ maxFeePerGas?: bigint;
1536
+ maxPriorityFeePerGas?: bigint;
1537
+ nonce?: number;
1538
+ value?: bigint;
1539
+ }): Promise<`0x${string}`> {
1540
+ if (!this.contract.write) {
1541
+ throw new Error('Wallet client is required for write operations');
1542
+ }
1543
+ return this.contract.write.setApprovalForAll([operator, approved] as const, options) as Promise<`0x${string}`>;
1544
+ }
1545
+
1546
+ /**
1547
+ * setRoyaltyOperator
1548
+ * nonpayable
1549
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1550
+ */
1551
+ async setRoyaltyOperator(newOperator: `0x${string}`, options?: {
1552
+ accessList?: import('viem').AccessList;
1553
+ authorizationList?: import('viem').AuthorizationList;
1554
+ chain?: import('viem').Chain | null;
1555
+ dataSuffix?: `0x${string}`;
1556
+ gas?: bigint;
1557
+ gasPrice?: bigint;
1558
+ maxFeePerGas?: bigint;
1559
+ maxPriorityFeePerGas?: bigint;
1560
+ nonce?: number;
1561
+ value?: bigint;
1562
+ }): Promise<`0x${string}`> {
1563
+ if (!this.contract.write) {
1564
+ throw new Error('Wallet client is required for write operations');
1565
+ }
1566
+ return this.contract.write.setRoyaltyOperator([newOperator] as const, options) as Promise<`0x${string}`>;
1567
+ }
1568
+
1569
+ /**
1570
+ * setURI
1571
+ * nonpayable
1572
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1573
+ */
1574
+ async setURI(newURI: string, options?: {
1575
+ accessList?: import('viem').AccessList;
1576
+ authorizationList?: import('viem').AuthorizationList;
1577
+ chain?: import('viem').Chain | null;
1578
+ dataSuffix?: `0x${string}`;
1579
+ gas?: bigint;
1580
+ gasPrice?: bigint;
1581
+ maxFeePerGas?: bigint;
1582
+ maxPriorityFeePerGas?: bigint;
1583
+ nonce?: number;
1584
+ value?: bigint;
1585
+ }): Promise<`0x${string}`> {
1586
+ if (!this.contract.write) {
1587
+ throw new Error('Wallet client is required for write operations');
1588
+ }
1589
+ return this.contract.write.setURI([newURI] as const, options) as Promise<`0x${string}`>;
1590
+ }
1591
+
1592
+ /**
1593
+ * transferOwnership
1594
+ * nonpayable
1595
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1596
+ */
1597
+ async transferOwnership(newOwner: `0x${string}`, options?: {
1598
+ accessList?: import('viem').AccessList;
1599
+ authorizationList?: import('viem').AuthorizationList;
1600
+ chain?: import('viem').Chain | null;
1601
+ dataSuffix?: `0x${string}`;
1602
+ gas?: bigint;
1603
+ gasPrice?: bigint;
1604
+ maxFeePerGas?: bigint;
1605
+ maxPriorityFeePerGas?: bigint;
1606
+ nonce?: number;
1607
+ value?: bigint;
1608
+ }): Promise<`0x${string}`> {
1609
+ if (!this.contract.write) {
1610
+ throw new Error('Wallet client is required for write operations');
1611
+ }
1612
+ return this.contract.write.transferOwnership([newOwner] as const, options) as Promise<`0x${string}`>;
1613
+ }
1614
+
1615
+
1616
+
1617
+ /**
1618
+ * Simulate contract write operations (dry-run without sending transaction)
1619
+ *
1620
+ * @example
1621
+ * const result = await contract.simulate.transfer('0x...', 1000n);
1622
+ * console.log('Gas estimate:', result.request.gas);
1623
+ * console.log('Would succeed:', result.result);
1624
+ */
1625
+ get simulate() {
1626
+ const contract = this.contract;
1627
+ if (!contract.simulate) {
1628
+ throw new Error('Public client is required for simulation');
1629
+ }
1630
+ return {
1631
+ /**
1632
+ * Simulate acceptOwnership
1633
+ * Returns gas estimate and result without sending transaction
1634
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1635
+ */
1636
+ async acceptOwnership(options?: {
1637
+ accessList?: import('viem').AccessList;
1638
+ authorizationList?: import('viem').AuthorizationList;
1639
+ chain?: import('viem').Chain | null;
1640
+ dataSuffix?: `0x${string}`;
1641
+ gas?: bigint;
1642
+ gasPrice?: bigint;
1643
+ maxFeePerGas?: bigint;
1644
+ maxPriorityFeePerGas?: bigint;
1645
+ nonce?: number;
1646
+ value?: bigint;
1647
+ }): Promise<void> {
1648
+ return contract.simulate.acceptOwnership(options) as Promise<void>;
1649
+ },
1650
+ /**
1651
+ * Simulate burn
1652
+ * Returns gas estimate and result without sending transaction
1653
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1654
+ */
1655
+ async burn(amount: bigint, minHuntOut: bigint, options?: {
1656
+ accessList?: import('viem').AccessList;
1657
+ authorizationList?: import('viem').AuthorizationList;
1658
+ chain?: import('viem').Chain | null;
1659
+ dataSuffix?: `0x${string}`;
1660
+ gas?: bigint;
1661
+ gasPrice?: bigint;
1662
+ maxFeePerGas?: bigint;
1663
+ maxPriorityFeePerGas?: bigint;
1664
+ nonce?: number;
1665
+ value?: bigint;
1666
+ }): Promise<bigint> {
1667
+ return contract.simulate.burn([amount, minHuntOut] as const, options) as Promise<bigint>;
1668
+ },
1669
+ /**
1670
+ * Simulate deposit
1671
+ * Returns gas estimate and result without sending transaction
1672
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1673
+ */
1674
+ async deposit(amount: bigint, expectedSupply: bigint, options?: {
1675
+ accessList?: import('viem').AccessList;
1676
+ authorizationList?: import('viem').AuthorizationList;
1677
+ chain?: import('viem').Chain | null;
1678
+ dataSuffix?: `0x${string}`;
1679
+ gas?: bigint;
1680
+ gasPrice?: bigint;
1681
+ maxFeePerGas?: bigint;
1682
+ maxPriorityFeePerGas?: bigint;
1683
+ nonce?: number;
1684
+ value?: bigint;
1685
+ }): Promise<void> {
1686
+ return contract.simulate.deposit([amount, expectedSupply] as const, options) as Promise<void>;
1687
+ },
1688
+ /**
1689
+ * Simulate mint
1690
+ * Returns gas estimate and result without sending transaction
1691
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1692
+ */
1693
+ async mint(amount: bigint, maxHuntIn: bigint, receiver: `0x${string}`, options?: {
1694
+ accessList?: import('viem').AccessList;
1695
+ authorizationList?: import('viem').AuthorizationList;
1696
+ chain?: import('viem').Chain | null;
1697
+ dataSuffix?: `0x${string}`;
1698
+ gas?: bigint;
1699
+ gasPrice?: bigint;
1700
+ maxFeePerGas?: bigint;
1701
+ maxPriorityFeePerGas?: bigint;
1702
+ nonce?: number;
1703
+ value?: bigint;
1704
+ }): Promise<bigint> {
1705
+ return contract.simulate.mint([amount, maxHuntIn, receiver] as const, options) as Promise<bigint>;
1706
+ },
1707
+ /**
1708
+ * Simulate renounceOwnership
1709
+ * Returns gas estimate and result without sending transaction
1710
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1711
+ */
1712
+ async renounceOwnership(options?: {
1713
+ accessList?: import('viem').AccessList;
1714
+ authorizationList?: import('viem').AuthorizationList;
1715
+ chain?: import('viem').Chain | null;
1716
+ dataSuffix?: `0x${string}`;
1717
+ gas?: bigint;
1718
+ gasPrice?: bigint;
1719
+ maxFeePerGas?: bigint;
1720
+ maxPriorityFeePerGas?: bigint;
1721
+ nonce?: number;
1722
+ value?: bigint;
1723
+ }): Promise<void> {
1724
+ return contract.simulate.renounceOwnership(options) as Promise<void>;
1725
+ },
1726
+ /**
1727
+ * Simulate safeBatchTransferFrom
1728
+ * Returns gas estimate and result without sending transaction
1729
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1730
+ */
1731
+ async safeBatchTransferFrom(from: `0x${string}`, to: `0x${string}`, ids: bigint[], values: bigint[], data: `0x${string}`, options?: {
1732
+ accessList?: import('viem').AccessList;
1733
+ authorizationList?: import('viem').AuthorizationList;
1734
+ chain?: import('viem').Chain | null;
1735
+ dataSuffix?: `0x${string}`;
1736
+ gas?: bigint;
1737
+ gasPrice?: bigint;
1738
+ maxFeePerGas?: bigint;
1739
+ maxPriorityFeePerGas?: bigint;
1740
+ nonce?: number;
1741
+ value?: bigint;
1742
+ }): Promise<void> {
1743
+ return contract.simulate.safeBatchTransferFrom([from, to, ids, values, data] as const, options) as Promise<void>;
1744
+ },
1745
+ /**
1746
+ * Simulate safeTransferFrom
1747
+ * Returns gas estimate and result without sending transaction
1748
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1749
+ */
1750
+ async safeTransferFrom(from: `0x${string}`, to: `0x${string}`, id: bigint, value: bigint, data: `0x${string}`, options?: {
1751
+ accessList?: import('viem').AccessList;
1752
+ authorizationList?: import('viem').AuthorizationList;
1753
+ chain?: import('viem').Chain | null;
1754
+ dataSuffix?: `0x${string}`;
1755
+ gas?: bigint;
1756
+ gasPrice?: bigint;
1757
+ maxFeePerGas?: bigint;
1758
+ maxPriorityFeePerGas?: bigint;
1759
+ nonce?: number;
1760
+ value?: bigint;
1761
+ }): Promise<void> {
1762
+ return contract.simulate.safeTransferFrom([from, to, id, value, data] as const, options) as Promise<void>;
1763
+ },
1764
+ /**
1765
+ * Simulate setApprovalForAll
1766
+ * Returns gas estimate and result without sending transaction
1767
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1768
+ */
1769
+ async setApprovalForAll(operator: `0x${string}`, approved: boolean, options?: {
1770
+ accessList?: import('viem').AccessList;
1771
+ authorizationList?: import('viem').AuthorizationList;
1772
+ chain?: import('viem').Chain | null;
1773
+ dataSuffix?: `0x${string}`;
1774
+ gas?: bigint;
1775
+ gasPrice?: bigint;
1776
+ maxFeePerGas?: bigint;
1777
+ maxPriorityFeePerGas?: bigint;
1778
+ nonce?: number;
1779
+ value?: bigint;
1780
+ }): Promise<void> {
1781
+ return contract.simulate.setApprovalForAll([operator, approved] as const, options) as Promise<void>;
1782
+ },
1783
+ /**
1784
+ * Simulate setRoyaltyOperator
1785
+ * Returns gas estimate and result without sending transaction
1786
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1787
+ */
1788
+ async setRoyaltyOperator(newOperator: `0x${string}`, options?: {
1789
+ accessList?: import('viem').AccessList;
1790
+ authorizationList?: import('viem').AuthorizationList;
1791
+ chain?: import('viem').Chain | null;
1792
+ dataSuffix?: `0x${string}`;
1793
+ gas?: bigint;
1794
+ gasPrice?: bigint;
1795
+ maxFeePerGas?: bigint;
1796
+ maxPriorityFeePerGas?: bigint;
1797
+ nonce?: number;
1798
+ value?: bigint;
1799
+ }): Promise<void> {
1800
+ return contract.simulate.setRoyaltyOperator([newOperator] as const, options) as Promise<void>;
1801
+ },
1802
+ /**
1803
+ * Simulate setURI
1804
+ * Returns gas estimate and result without sending transaction
1805
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1806
+ */
1807
+ async setURI(newURI: string, options?: {
1808
+ accessList?: import('viem').AccessList;
1809
+ authorizationList?: import('viem').AuthorizationList;
1810
+ chain?: import('viem').Chain | null;
1811
+ dataSuffix?: `0x${string}`;
1812
+ gas?: bigint;
1813
+ gasPrice?: bigint;
1814
+ maxFeePerGas?: bigint;
1815
+ maxPriorityFeePerGas?: bigint;
1816
+ nonce?: number;
1817
+ value?: bigint;
1818
+ }): Promise<void> {
1819
+ return contract.simulate.setURI([newURI] as const, options) as Promise<void>;
1820
+ },
1821
+ /**
1822
+ * Simulate transferOwnership
1823
+ * Returns gas estimate and result without sending transaction
1824
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
1825
+ */
1826
+ async transferOwnership(newOwner: `0x${string}`, options?: {
1827
+ accessList?: import('viem').AccessList;
1828
+ authorizationList?: import('viem').AuthorizationList;
1829
+ chain?: import('viem').Chain | null;
1830
+ dataSuffix?: `0x${string}`;
1831
+ gas?: bigint;
1832
+ gasPrice?: bigint;
1833
+ maxFeePerGas?: bigint;
1834
+ maxPriorityFeePerGas?: bigint;
1835
+ nonce?: number;
1836
+ value?: bigint;
1837
+ }): Promise<void> {
1838
+ return contract.simulate.transferOwnership([newOwner] as const, options) as Promise<void>;
1839
+ }
1840
+ };
1841
+ }
1842
+
1843
+ /**
1844
+ * Watch contract events
1845
+ *
1846
+ * @example
1847
+ * // Watch all Transfer events
1848
+ * const unwatch = contract.watch.Transfer((event) => {
1849
+ * console.log('Transfer:', event);
1850
+ * });
1851
+ *
1852
+ * // Stop watching
1853
+ * unwatch();
1854
+ */
1855
+ get watch() {
1856
+ return {
1857
+ /**
1858
+ * Watch ApprovalForAll events
1859
+ * @param callback Function to call when event is emitted
1860
+ * @param filter Optional filter for indexed parameters
1861
+ * @returns Unwatch function to stop listening
1862
+ */
1863
+ ApprovalForAll: (callback: (event: { account: `0x${string}`; operator: `0x${string}`; approved: boolean }) => void, filter?: { account: `0x${string}`; operator: `0x${string}` }) => {
1864
+ return this.publicClient.watchContractEvent({
1865
+ address: this.contractAddress,
1866
+ abi: FactoryNFT_jsonAbi,
1867
+ eventName: 'ApprovalForAll',
1868
+ args: filter,
1869
+ onLogs: (logs: any[]) => {
1870
+ logs.forEach((log: any) => {
1871
+ callback(log.args as any);
1872
+ });
1873
+ },
1874
+ }) as () => void;
1875
+ },
1876
+ /**
1877
+ * Watch Deposited events
1878
+ * @param callback Function to call when event is emitted
1879
+ * @param filter Optional filter for indexed parameters
1880
+ * @returns Unwatch function to stop listening
1881
+ */
1882
+ Deposited: (callback: (event: { depositor: `0x${string}`; huntIn: bigint; supply: bigint }) => void, filter?: { depositor: `0x${string}` }) => {
1883
+ return this.publicClient.watchContractEvent({
1884
+ address: this.contractAddress,
1885
+ abi: FactoryNFT_jsonAbi,
1886
+ eventName: 'Deposited',
1887
+ args: filter,
1888
+ onLogs: (logs: any[]) => {
1889
+ logs.forEach((log: any) => {
1890
+ callback(log.args as any);
1891
+ });
1892
+ },
1893
+ }) as () => void;
1894
+ },
1895
+ /**
1896
+ * Watch Minted events
1897
+ * @param callback Function to call when event is emitted
1898
+ * @param filter Optional filter for indexed parameters
1899
+ * @returns Unwatch function to stop listening
1900
+ */
1901
+ Minted: (callback: (event: { payer: `0x${string}`; receiver: `0x${string}`; amount: bigint; huntIn: bigint }) => void, filter?: { payer: `0x${string}`; receiver: `0x${string}` }) => {
1902
+ return this.publicClient.watchContractEvent({
1903
+ address: this.contractAddress,
1904
+ abi: FactoryNFT_jsonAbi,
1905
+ eventName: 'Minted',
1906
+ args: filter,
1907
+ onLogs: (logs: any[]) => {
1908
+ logs.forEach((log: any) => {
1909
+ callback(log.args as any);
1910
+ });
1911
+ },
1912
+ }) as () => void;
1913
+ },
1914
+ /**
1915
+ * Watch OwnershipTransferStarted events
1916
+ * @param callback Function to call when event is emitted
1917
+ * @param filter Optional filter for indexed parameters
1918
+ * @returns Unwatch function to stop listening
1919
+ */
1920
+ OwnershipTransferStarted: (callback: (event: { previousOwner: `0x${string}`; newOwner: `0x${string}` }) => void, filter?: { previousOwner: `0x${string}`; newOwner: `0x${string}` }) => {
1921
+ return this.publicClient.watchContractEvent({
1922
+ address: this.contractAddress,
1923
+ abi: FactoryNFT_jsonAbi,
1924
+ eventName: 'OwnershipTransferStarted',
1925
+ args: filter,
1926
+ onLogs: (logs: any[]) => {
1927
+ logs.forEach((log: any) => {
1928
+ callback(log.args as any);
1929
+ });
1930
+ },
1931
+ }) as () => void;
1932
+ },
1933
+ /**
1934
+ * Watch OwnershipTransferred events
1935
+ * @param callback Function to call when event is emitted
1936
+ * @param filter Optional filter for indexed parameters
1937
+ * @returns Unwatch function to stop listening
1938
+ */
1939
+ OwnershipTransferred: (callback: (event: { previousOwner: `0x${string}`; newOwner: `0x${string}` }) => void, filter?: { previousOwner: `0x${string}`; newOwner: `0x${string}` }) => {
1940
+ return this.publicClient.watchContractEvent({
1941
+ address: this.contractAddress,
1942
+ abi: FactoryNFT_jsonAbi,
1943
+ eventName: 'OwnershipTransferred',
1944
+ args: filter,
1945
+ onLogs: (logs: any[]) => {
1946
+ logs.forEach((log: any) => {
1947
+ callback(log.args as any);
1948
+ });
1949
+ },
1950
+ }) as () => void;
1951
+ },
1952
+ /**
1953
+ * Watch Redeemed events
1954
+ * @param callback Function to call when event is emitted
1955
+ * @param filter Optional filter for indexed parameters
1956
+ * @returns Unwatch function to stop listening
1957
+ */
1958
+ Redeemed: (callback: (event: { holder: `0x${string}`; amount: bigint; huntOut: bigint; retainedFee: bigint }) => void, filter?: { holder: `0x${string}` }) => {
1959
+ return this.publicClient.watchContractEvent({
1960
+ address: this.contractAddress,
1961
+ abi: FactoryNFT_jsonAbi,
1962
+ eventName: 'Redeemed',
1963
+ args: filter,
1964
+ onLogs: (logs: any[]) => {
1965
+ logs.forEach((log: any) => {
1966
+ callback(log.args as any);
1967
+ });
1968
+ },
1969
+ }) as () => void;
1970
+ },
1971
+ /**
1972
+ * Watch RoyaltyOperatorUpdated events
1973
+ * @param callback Function to call when event is emitted
1974
+ * @param filter Optional filter for indexed parameters
1975
+ * @returns Unwatch function to stop listening
1976
+ */
1977
+ RoyaltyOperatorUpdated: (callback: (event: { previousOperator: `0x${string}`; newOperator: `0x${string}` }) => void, filter?: { previousOperator: `0x${string}`; newOperator: `0x${string}` }) => {
1978
+ return this.publicClient.watchContractEvent({
1979
+ address: this.contractAddress,
1980
+ abi: FactoryNFT_jsonAbi,
1981
+ eventName: 'RoyaltyOperatorUpdated',
1982
+ args: filter,
1983
+ onLogs: (logs: any[]) => {
1984
+ logs.forEach((log: any) => {
1985
+ callback(log.args as any);
1986
+ });
1987
+ },
1988
+ }) as () => void;
1989
+ },
1990
+ /**
1991
+ * Watch TransferBatch events
1992
+ * @param callback Function to call when event is emitted
1993
+ * @param filter Optional filter for indexed parameters
1994
+ * @returns Unwatch function to stop listening
1995
+ */
1996
+ TransferBatch: (callback: (event: { operator: `0x${string}`; from: `0x${string}`; to: `0x${string}`; ids: bigint[]; values: bigint[] }) => void, filter?: { operator: `0x${string}`; from: `0x${string}`; to: `0x${string}` }) => {
1997
+ return this.publicClient.watchContractEvent({
1998
+ address: this.contractAddress,
1999
+ abi: FactoryNFT_jsonAbi,
2000
+ eventName: 'TransferBatch',
2001
+ args: filter,
2002
+ onLogs: (logs: any[]) => {
2003
+ logs.forEach((log: any) => {
2004
+ callback(log.args as any);
2005
+ });
2006
+ },
2007
+ }) as () => void;
2008
+ },
2009
+ /**
2010
+ * Watch TransferSingle events
2011
+ * @param callback Function to call when event is emitted
2012
+ * @param filter Optional filter for indexed parameters
2013
+ * @returns Unwatch function to stop listening
2014
+ */
2015
+ TransferSingle: (callback: (event: { operator: `0x${string}`; from: `0x${string}`; to: `0x${string}`; id: bigint; value: bigint }) => void, filter?: { operator: `0x${string}`; from: `0x${string}`; to: `0x${string}` }) => {
2016
+ return this.publicClient.watchContractEvent({
2017
+ address: this.contractAddress,
2018
+ abi: FactoryNFT_jsonAbi,
2019
+ eventName: 'TransferSingle',
2020
+ args: filter,
2021
+ onLogs: (logs: any[]) => {
2022
+ logs.forEach((log: any) => {
2023
+ callback(log.args as any);
2024
+ });
2025
+ },
2026
+ }) as () => void;
2027
+ },
2028
+ /**
2029
+ * Watch URI events
2030
+ * @param callback Function to call when event is emitted
2031
+ * @param filter Optional filter for indexed parameters
2032
+ * @returns Unwatch function to stop listening
2033
+ */
2034
+ URI: (callback: (event: { id: bigint; value: string }) => void, filter?: { id: bigint }) => {
2035
+ return this.publicClient.watchContractEvent({
2036
+ address: this.contractAddress,
2037
+ abi: FactoryNFT_jsonAbi,
2038
+ eventName: 'URI',
2039
+ args: filter,
2040
+ onLogs: (logs: any[]) => {
2041
+ logs.forEach((log: any) => {
2042
+ callback(log.args as any);
2043
+ });
2044
+ },
2045
+ }) as () => void;
2046
+ }
2047
+ };
2048
+ }
2049
+ }