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