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