@wireio/stake 0.0.5 → 0.1.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.
Files changed (44) hide show
  1. package/README.md +203 -13
  2. package/lib/stake.browser.js +2803 -3331
  3. package/lib/stake.browser.js.map +1 -1
  4. package/lib/stake.d.ts +377 -6260
  5. package/lib/stake.js +2940 -3478
  6. package/lib/stake.js.map +1 -1
  7. package/lib/stake.m.js +2803 -3331
  8. package/lib/stake.m.js.map +1 -1
  9. package/package.json +2 -2
  10. package/src/assets/solana/idl/deposit.json +46 -10
  11. package/src/assets/solana/idl/distribution.json +40 -8
  12. package/src/assets/solana/idl/liq_sol_token.json +25 -2
  13. package/src/assets/solana/idl/mint_helper.json +110 -0
  14. package/src/assets/solana/idl/read_tracked_balance.json +140 -0
  15. package/src/assets/solana/idl/stake_controller.json +1141 -780
  16. package/src/assets/solana/idl/treasury.json +1 -227
  17. package/src/assets/solana/idl/validator_leaderboard.json +88 -47
  18. package/src/assets/solana/idl/validator_registry.json +115 -46
  19. package/src/assets/solana/idl/yield_oracle.json +1 -1
  20. package/src/assets/solana/types/deposit.ts +46 -10
  21. package/src/assets/solana/types/distribution.ts +40 -8
  22. package/src/assets/solana/types/liq_sol_token.ts +25 -2
  23. package/src/assets/solana/types/mint_helper.ts +116 -0
  24. package/src/assets/solana/types/read_tracked_balance.ts +146 -0
  25. package/src/assets/solana/types/stake_controller.ts +1141 -780
  26. package/src/assets/solana/types/treasury.ts +1 -227
  27. package/src/assets/solana/types/validator_leaderboard.ts +88 -47
  28. package/src/assets/solana/types/validator_registry.ts +115 -46
  29. package/src/assets/solana/types/yield_oracle.ts +1 -1
  30. package/src/index.ts +3 -4
  31. package/src/networks/ethereum/ethereum.ts +2 -2
  32. package/src/networks/solana/clients/deposit.client.ts +71 -80
  33. package/src/networks/solana/clients/distribution.client.ts +392 -141
  34. package/src/networks/solana/clients/leaderboard.client.ts +82 -107
  35. package/src/networks/solana/constants.ts +141 -56
  36. package/src/networks/solana/program.ts +36 -89
  37. package/src/networks/solana/solana.ts +173 -36
  38. package/src/networks/solana/types.ts +57 -0
  39. package/src/scripts/fetch-artifacts.sh +24 -0
  40. package/src/staker/staker.ts +32 -28
  41. package/src/staker/types.ts +25 -21
  42. package/src/assets/solana/idl/stake_registry.json +0 -435
  43. package/src/networks/solana/utils.ts +0 -122
  44. /package/src/{utils.ts → common/utils.ts} +0 -0
@@ -5,7 +5,7 @@
5
5
  * IDL can be found at `target/idl/stake_controller.json`.
6
6
  */
7
7
  export type StakeController = {
8
- "address": "2BLSWVneoJAFXTDW2siQuEaZ7RUPTb9df482VChToK7K",
8
+ "address": "4Ab1SwV6RPUN5Btnf95qvQCyNVR3iHnXjnMYaKsgimTp",
9
9
  "metadata": {
10
10
  "name": "stakeController",
11
11
  "version": "0.1.0",
@@ -13,77 +13,118 @@ export type StakeController = {
13
13
  },
14
14
  "instructions": [
15
15
  {
16
- "name": "claimUnstake",
16
+ "name": "calculateCompoundGrowth",
17
+ "docs": [
18
+ "Calculate compound growth for an amount using pay rate history - can be called via CPI"
19
+ ],
17
20
  "discriminator": [
18
- 172,
19
- 113,
20
- 117,
21
- 178,
22
- 223,
23
- 245,
24
- 247,
25
- 118
21
+ 105,
22
+ 2,
23
+ 145,
24
+ 40,
25
+ 175,
26
+ 163,
27
+ 215,
28
+ 99
26
29
  ],
27
30
  "accounts": [
28
31
  {
29
- "name": "user",
30
- "writable": true,
31
- "signer": true
32
- },
33
- {
34
- "name": "vault",
35
- "writable": true,
32
+ "name": "payRateHistory",
33
+ "docs": [
34
+ "The pay rate history account containing historical rates"
35
+ ],
36
36
  "pda": {
37
37
  "seeds": [
38
38
  {
39
39
  "kind": "const",
40
40
  "value": [
41
- 118,
41
+ 112,
42
42
  97,
43
- 117,
44
- 108,
45
- 116
43
+ 121,
44
+ 95,
45
+ 114,
46
+ 97,
47
+ 116,
48
+ 101,
49
+ 95,
50
+ 104,
51
+ 105,
52
+ 115,
53
+ 116,
54
+ 111,
55
+ 114,
56
+ 121
46
57
  ]
47
58
  }
48
59
  ]
49
60
  }
61
+ }
62
+ ],
63
+ "args": [
64
+ {
65
+ "name": "initialAmount",
66
+ "type": "u64"
50
67
  },
51
68
  {
52
- "name": "controllerState",
69
+ "name": "sinceTimestamp",
70
+ "type": "i64"
71
+ }
72
+ ],
73
+ "returns": "u64"
74
+ },
75
+ {
76
+ "name": "closeGlobalStakeInfo",
77
+ "docs": [
78
+ "Close the global stake info account (for migration)"
79
+ ],
80
+ "discriminator": [
81
+ 110,
82
+ 69,
83
+ 4,
84
+ 217,
85
+ 6,
86
+ 177,
87
+ 230,
88
+ 121
89
+ ],
90
+ "accounts": [
91
+ {
92
+ "name": "admin",
93
+ "writable": true,
94
+ "signer": true
95
+ },
96
+ {
97
+ "name": "globalStakeInfo",
53
98
  "writable": true,
54
99
  "pda": {
55
100
  "seeds": [
56
101
  {
57
102
  "kind": "const",
58
103
  "value": [
104
+ 103,
105
+ 108,
106
+ 111,
107
+ 98,
108
+ 97,
109
+ 108,
110
+ 95,
59
111
  115,
60
112
  116,
61
113
  97,
62
114
  107,
63
115
  101,
64
116
  95,
65
- 99,
66
- 111,
117
+ 105,
67
118
  110,
68
- 116,
69
- 114,
70
- 111,
71
- 108,
72
- 108,
73
- 101,
74
- 114
119
+ 102,
120
+ 111
75
121
  ]
76
122
  }
77
123
  ]
78
124
  }
79
125
  }
80
126
  ],
81
- "args": [
82
- {
83
- "name": "ticketId",
84
- "type": "u64"
85
- }
86
- ]
127
+ "args": []
87
128
  },
88
129
  {
89
130
  "name": "depositToReserve",
@@ -220,11 +261,6 @@ export type StakeController = {
220
261
  166
221
262
  ],
222
263
  "accounts": [
223
- {
224
- "name": "admin",
225
- "writable": true,
226
- "signer": true
227
- },
228
264
  {
229
265
  "name": "reservePool",
230
266
  "writable": true,
@@ -268,28 +304,30 @@ export type StakeController = {
268
304
  }
269
305
  },
270
306
  {
271
- "name": "controllerState",
307
+ "name": "globalStakeInfo",
308
+ "writable": true,
272
309
  "pda": {
273
310
  "seeds": [
274
311
  {
275
312
  "kind": "const",
276
313
  "value": [
314
+ 103,
315
+ 108,
316
+ 111,
317
+ 98,
318
+ 97,
319
+ 108,
320
+ 95,
277
321
  115,
278
322
  116,
279
323
  97,
280
324
  107,
281
325
  101,
282
326
  95,
283
- 99,
284
- 111,
327
+ 105,
285
328
  110,
286
- 116,
287
- 114,
288
- 111,
289
- 108,
290
- 108,
291
- 101,
292
- 114
329
+ 102,
330
+ 111
293
331
  ]
294
332
  }
295
333
  ]
@@ -301,7 +339,7 @@ export type StakeController = {
301
339
  },
302
340
  {
303
341
  "name": "validatorRegistryProgram",
304
- "address": "DqaNZkyhg6ASSkut8tyQGjwMtv35Yj5rA9JZvzmzZb3e"
342
+ "address": "EgUbYv1coMTXsdRc5HBqTv32SNhTcsRS1nPiUDw5LbQK"
305
343
  },
306
344
  {
307
345
  "name": "stakeProgram"
@@ -333,112 +371,158 @@ export type StakeController = {
333
371
  ]
334
372
  },
335
373
  {
336
- "name": "initialize",
374
+ "name": "getAveragePayRate",
375
+ "docs": [
376
+ "Gets the average pay rate from the last X entries (default 5), excluding zero values",
377
+ "Can be called via CPI or locally for yield calculations"
378
+ ],
337
379
  "discriminator": [
338
- 175,
339
- 175,
380
+ 28,
381
+ 24,
340
382
  109,
383
+ 124,
384
+ 61,
385
+ 26,
341
386
  31,
342
- 13,
343
- 152,
344
- 155,
345
- 237
387
+ 242
346
388
  ],
347
389
  "accounts": [
348
390
  {
349
- "name": "controllerState",
350
- "writable": true,
391
+ "name": "payRateHistory",
351
392
  "pda": {
352
393
  "seeds": [
353
394
  {
354
395
  "kind": "const",
355
396
  "value": [
356
- 115,
357
- 116,
397
+ 112,
358
398
  97,
359
- 107,
399
+ 121,
400
+ 95,
401
+ 114,
402
+ 97,
403
+ 116,
360
404
  101,
361
405
  95,
362
- 99,
363
- 111,
364
- 110,
406
+ 104,
407
+ 105,
408
+ 115,
365
409
  116,
366
- 114,
367
410
  111,
368
- 108,
369
- 108,
370
- 101,
371
- 114
411
+ 114,
412
+ 121
372
413
  ]
373
414
  }
374
415
  ]
375
416
  }
376
- },
377
- {
378
- "name": "payer",
379
- "writable": true,
380
- "signer": true
381
- },
382
- {
383
- "name": "authority",
384
- "signer": true
385
- },
417
+ }
418
+ ],
419
+ "args": [
386
420
  {
387
- "name": "systemProgram",
388
- "address": "11111111111111111111111111111111"
421
+ "name": "count",
422
+ "type": {
423
+ "option": "u8"
424
+ }
389
425
  }
390
426
  ],
391
- "args": []
427
+ "returns": "u64"
392
428
  },
393
429
  {
394
- "name": "initializeReservePool",
430
+ "name": "incrementTotalFeesDeposited",
431
+ "docs": [
432
+ "Increment total fees deposited - can be called via CPI"
433
+ ],
395
434
  "discriminator": [
396
- 4,
397
- 7,
398
- 171,
399
- 131,
400
- 156,
401
- 172,
402
- 150,
403
- 220
435
+ 19,
436
+ 133,
437
+ 72,
438
+ 151,
439
+ 103,
440
+ 9,
441
+ 19,
442
+ 202
404
443
  ],
405
444
  "accounts": [
406
445
  {
407
- "name": "reservePool",
446
+ "name": "globalStakeInfo",
408
447
  "writable": true,
409
448
  "pda": {
410
449
  "seeds": [
411
450
  {
412
451
  "kind": "const",
413
452
  "value": [
414
- 114,
415
- 101,
453
+ 103,
454
+ 108,
455
+ 111,
456
+ 98,
457
+ 97,
458
+ 108,
459
+ 95,
416
460
  115,
417
- 101,
418
- 114,
419
- 118,
461
+ 116,
462
+ 97,
463
+ 107,
420
464
  101,
421
465
  95,
422
- 112,
423
- 111,
424
- 111,
425
- 108
466
+ 105,
467
+ 110,
468
+ 102,
469
+ 111
426
470
  ]
427
471
  }
428
472
  ]
429
473
  }
474
+ }
475
+ ],
476
+ "args": [
477
+ {
478
+ "name": "amount",
479
+ "type": "u64"
480
+ }
481
+ ]
482
+ },
483
+ {
484
+ "name": "initBucket",
485
+ "docs": [
486
+ "Initialize the liqSOL bucket by creating its associated token account"
487
+ ],
488
+ "discriminator": [
489
+ 237,
490
+ 69,
491
+ 61,
492
+ 218,
493
+ 18,
494
+ 60,
495
+ 21,
496
+ 236
497
+ ],
498
+ "accounts": [
499
+ {
500
+ "name": "admin",
501
+ "writable": true,
502
+ "signer": true
430
503
  },
431
504
  {
432
- "name": "vault",
505
+ "name": "bucketAuthority",
506
+ "docs": [
507
+ "The bucket authority PDA that will own the token account"
508
+ ],
433
509
  "pda": {
434
510
  "seeds": [
435
511
  {
436
512
  "kind": "const",
437
513
  "value": [
438
- 118,
439
- 97,
440
- 117,
441
514
  108,
515
+ 105,
516
+ 113,
517
+ 115,
518
+ 111,
519
+ 108,
520
+ 95,
521
+ 98,
522
+ 117,
523
+ 99,
524
+ 107,
525
+ 101,
442
526
  116
443
527
  ]
444
528
  }
@@ -446,90 +530,98 @@ export type StakeController = {
446
530
  }
447
531
  },
448
532
  {
449
- "name": "payer",
450
- "writable": true,
451
- "signer": true
452
- },
453
- {
454
- "name": "controllerState",
533
+ "name": "bucketTokenAccount",
534
+ "docs": [
535
+ "The bucket's associated token account to be created"
536
+ ],
455
537
  "writable": true,
456
538
  "pda": {
457
539
  "seeds": [
458
540
  {
459
- "kind": "const",
460
- "value": [
461
- 115,
462
- 116,
463
- 97,
464
- 107,
465
- 101,
466
- 95,
467
- 99,
468
- 111,
469
- 110,
470
- 116,
471
- 114,
472
- 111,
473
- 108,
474
- 108,
475
- 101,
476
- 114
477
- ]
541
+ "kind": "account",
542
+ "path": "bucketAuthority"
543
+ },
544
+ {
545
+ "kind": "account",
546
+ "path": "tokenProgram"
547
+ },
548
+ {
549
+ "kind": "account",
550
+ "path": "liqsolMint"
478
551
  }
479
- ]
552
+ ],
553
+ "program": {
554
+ "kind": "const",
555
+ "value": [
556
+ 140,
557
+ 151,
558
+ 37,
559
+ 143,
560
+ 78,
561
+ 36,
562
+ 137,
563
+ 241,
564
+ 187,
565
+ 61,
566
+ 16,
567
+ 41,
568
+ 20,
569
+ 142,
570
+ 13,
571
+ 131,
572
+ 11,
573
+ 90,
574
+ 19,
575
+ 153,
576
+ 218,
577
+ 255,
578
+ 16,
579
+ 132,
580
+ 4,
581
+ 142,
582
+ 123,
583
+ 216,
584
+ 219,
585
+ 233,
586
+ 248,
587
+ 89
588
+ ]
589
+ }
480
590
  }
481
591
  },
482
592
  {
483
- "name": "stakeProgram",
484
- "address": "Stake11111111111111111111111111111111111111"
593
+ "name": "liqsolMint",
594
+ "docs": [
595
+ "The liqSOL token mint"
596
+ ]
485
597
  },
486
598
  {
487
599
  "name": "systemProgram",
488
600
  "address": "11111111111111111111111111111111"
489
601
  },
490
602
  {
491
- "name": "rent",
492
- "address": "SysvarRent111111111111111111111111111111111"
603
+ "name": "tokenProgram"
604
+ },
605
+ {
606
+ "name": "associatedTokenProgram",
607
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
493
608
  }
494
609
  ],
495
610
  "args": []
496
611
  },
497
612
  {
498
- "name": "initializeVault",
613
+ "name": "initialize",
499
614
  "discriminator": [
500
- 48,
501
- 191,
502
- 163,
503
- 44,
504
- 71,
505
- 129,
506
- 63,
507
- 164
615
+ 175,
616
+ 175,
617
+ 109,
618
+ 31,
619
+ 13,
620
+ 152,
621
+ 155,
622
+ 237
508
623
  ],
509
624
  "accounts": [
510
- {
511
- "name": "vault",
512
- "writable": true,
513
- "pda": {
514
- "seeds": [
515
- {
516
- "kind": "const",
517
- "value": [
518
- 118,
519
- 97,
520
- 117,
521
- 108,
522
- 116
523
- ]
524
- }
525
- ]
526
- }
527
- },
528
- {
529
- "name": "payer",
530
- "writable": true,
531
- "signer": true
532
- },
533
625
  {
534
626
  "name": "controllerState",
535
627
  "writable": true,
@@ -560,63 +652,114 @@ export type StakeController = {
560
652
  }
561
653
  },
562
654
  {
563
- "name": "treasuryProgram",
564
- "address": "GJXKqEbdu76rRW6HcAVVupxdS3TetKfm7Dg8q3trHR8T"
655
+ "name": "payer",
656
+ "writable": true,
657
+ "signer": true
565
658
  },
566
659
  {
567
- "name": "treasury",
660
+ "name": "authority",
661
+ "signer": true
662
+ },
663
+ {
664
+ "name": "systemProgram",
665
+ "address": "11111111111111111111111111111111"
666
+ }
667
+ ],
668
+ "args": []
669
+ },
670
+ {
671
+ "name": "initializeGlobalStakeInfo",
672
+ "discriminator": [
673
+ 1,
674
+ 203,
675
+ 117,
676
+ 158,
677
+ 152,
678
+ 195,
679
+ 249,
680
+ 110
681
+ ],
682
+ "accounts": [
683
+ {
684
+ "name": "admin",
685
+ "writable": true,
686
+ "signer": true
687
+ },
688
+ {
689
+ "name": "globalStakeInfo",
568
690
  "writable": true,
569
691
  "pda": {
570
692
  "seeds": [
571
693
  {
572
694
  "kind": "const",
573
695
  "value": [
574
- 116,
575
- 114,
576
- 101,
696
+ 103,
697
+ 108,
698
+ 111,
699
+ 98,
577
700
  97,
701
+ 108,
702
+ 95,
578
703
  115,
579
- 117,
580
- 114,
581
- 121
704
+ 116,
705
+ 97,
706
+ 107,
707
+ 101,
708
+ 95,
709
+ 105,
710
+ 110,
711
+ 102,
712
+ 111
582
713
  ]
583
714
  }
584
- ],
585
- "program": {
586
- "kind": "account",
587
- "path": "treasuryProgram"
588
- }
715
+ ]
589
716
  }
590
717
  },
591
718
  {
592
- "name": "treasuryConfig",
719
+ "name": "systemProgram",
720
+ "address": "11111111111111111111111111111111"
721
+ }
722
+ ],
723
+ "args": []
724
+ },
725
+ {
726
+ "name": "initializePayCycle",
727
+ "discriminator": [
728
+ 1,
729
+ 184,
730
+ 249,
731
+ 179,
732
+ 11,
733
+ 182,
734
+ 239,
735
+ 224
736
+ ],
737
+ "accounts": [
738
+ {
739
+ "name": "admin",
740
+ "writable": true,
741
+ "signer": true
742
+ },
743
+ {
744
+ "name": "payCycle",
745
+ "writable": true,
593
746
  "pda": {
594
747
  "seeds": [
595
748
  {
596
749
  "kind": "const",
597
750
  "value": [
598
- 116,
599
- 114,
600
- 101,
751
+ 112,
601
752
  97,
602
- 115,
603
- 117,
604
- 114,
605
753
  121,
606
754
  95,
607
755
  99,
608
- 111,
609
- 110,
610
- 102,
611
- 105,
612
- 103
756
+ 121,
757
+ 99,
758
+ 108,
759
+ 101
613
760
  ]
614
761
  }
615
- ],
616
- "program": {
617
- "kind": "account",
618
- "path": "treasuryProgram"
619
- }
762
+ ]
620
763
  }
621
764
  },
622
765
  {
@@ -627,16 +770,16 @@ export type StakeController = {
627
770
  "args": []
628
771
  },
629
772
  {
630
- "name": "initializeYieldHistory",
773
+ "name": "initializePayRateHistory",
631
774
  "discriminator": [
632
- 238,
633
- 128,
634
- 77,
635
- 15,
636
- 178,
637
- 181,
638
- 48,
639
- 20
775
+ 157,
776
+ 190,
777
+ 74,
778
+ 135,
779
+ 91,
780
+ 232,
781
+ 250,
782
+ 122
640
783
  ],
641
784
  "accounts": [
642
785
  {
@@ -645,18 +788,21 @@ export type StakeController = {
645
788
  "signer": true
646
789
  },
647
790
  {
648
- "name": "yieldHistory",
791
+ "name": "payRateHistory",
649
792
  "writable": true,
650
793
  "pda": {
651
794
  "seeds": [
652
795
  {
653
796
  "kind": "const",
654
797
  "value": [
798
+ 112,
799
+ 97,
655
800
  121,
656
- 105,
801
+ 95,
802
+ 114,
803
+ 97,
804
+ 116,
657
805
  101,
658
- 108,
659
- 100,
660
806
  95,
661
807
  104,
662
808
  105,
@@ -666,10 +812,6 @@ export type StakeController = {
666
812
  114,
667
813
  121
668
814
  ]
669
- },
670
- {
671
- "kind": "arg",
672
- "path": "validator"
673
815
  }
674
816
  ]
675
817
  }
@@ -679,104 +821,48 @@ export type StakeController = {
679
821
  "address": "11111111111111111111111111111111"
680
822
  }
681
823
  ],
682
- "args": [
683
- {
684
- "name": "validator",
685
- "type": "pubkey"
686
- }
687
- ]
824
+ "args": []
688
825
  },
689
826
  {
690
- "name": "markEpochResolved",
827
+ "name": "initializeReservePool",
691
828
  "discriminator": [
692
- 48,
693
- 60,
694
- 35,
695
- 201,
696
- 188,
697
- 9,
698
- 93,
699
- 14
829
+ 4,
830
+ 7,
831
+ 171,
832
+ 131,
833
+ 156,
834
+ 172,
835
+ 150,
836
+ 220
700
837
  ],
701
838
  "accounts": [
702
839
  {
703
- "name": "admin",
704
- "signer": true
705
- },
706
- {
707
- "name": "validatorEpochInfo",
840
+ "name": "reservePool",
708
841
  "writable": true,
709
842
  "pda": {
710
843
  "seeds": [
711
844
  {
712
845
  "kind": "const",
713
846
  "value": [
714
- 118,
715
- 97,
716
- 108,
717
- 105,
718
- 100,
719
- 97,
720
- 116,
721
- 111,
722
847
  114,
723
- 95,
724
848
  101,
849
+ 115,
850
+ 101,
851
+ 114,
852
+ 118,
853
+ 101,
854
+ 95,
725
855
  112,
726
856
  111,
727
- 99,
728
- 104,
729
- 95,
730
- 105,
731
- 110,
732
- 102,
733
- 111
857
+ 111,
858
+ 108
734
859
  ]
735
- },
736
- {
737
- "kind": "arg",
738
- "path": "validator"
739
- },
740
- {
741
- "kind": "arg",
742
- "path": "epoch"
743
860
  }
744
861
  ]
745
862
  }
746
- }
747
- ],
748
- "args": [
749
- {
750
- "name": "validator",
751
- "type": "pubkey"
752
- },
753
- {
754
- "name": "epoch",
755
- "type": "u64"
756
- }
757
- ]
758
- },
759
- {
760
- "name": "mergeEpochStakesBatch",
761
- "discriminator": [
762
- 59,
763
- 236,
764
- 93,
765
- 218,
766
- 134,
767
- 186,
768
- 165,
769
- 0
770
- ],
771
- "accounts": [
772
- {
773
- "name": "admin",
774
- "writable": true,
775
- "signer": true
776
863
  },
777
864
  {
778
865
  "name": "vault",
779
- "writable": true,
780
866
  "pda": {
781
867
  "seeds": [
782
868
  {
@@ -793,82 +879,39 @@ export type StakeController = {
793
879
  }
794
880
  },
795
881
  {
796
- "name": "mainValidatorStake",
882
+ "name": "payer",
883
+ "writable": true,
884
+ "signer": true
885
+ },
886
+ {
887
+ "name": "controllerState",
797
888
  "writable": true,
798
889
  "pda": {
799
890
  "seeds": [
800
891
  {
801
892
  "kind": "const",
802
893
  "value": [
803
- 109,
804
- 97,
805
- 105,
806
- 110,
807
- 95,
808
894
  115,
809
895
  116,
810
896
  97,
811
897
  107,
812
- 101
813
- ]
814
- },
815
- {
816
- "kind": "arg",
817
- "path": "validator"
818
- }
819
- ]
820
- }
821
- },
822
- {
823
- "name": "validatorEpochInfo",
824
- "docs": [
825
- "Epoch info account"
826
- ],
827
- "pda": {
828
- "seeds": [
829
- {
830
- "kind": "const",
831
- "value": [
832
- 118,
833
- 97,
834
- 108,
835
- 105,
836
- 100,
837
- 97,
838
- 116,
839
- 111,
840
- 114,
841
- 95,
842
898
  101,
843
- 112,
844
- 111,
845
- 99,
846
- 104,
847
899
  95,
848
- 105,
900
+ 99,
901
+ 111,
849
902
  110,
850
- 102,
851
- 111
903
+ 116,
904
+ 114,
905
+ 111,
906
+ 108,
907
+ 108,
908
+ 101,
909
+ 114
852
910
  ]
853
- },
854
- {
855
- "kind": "arg",
856
- "path": "validator"
857
- },
858
- {
859
- "kind": "arg",
860
- "path": "epoch"
861
911
  }
862
912
  ]
863
913
  }
864
914
  },
865
- {
866
- "name": "validatorRegistry",
867
- "docs": [
868
- "Validator registry (mutable for updating stakes)"
869
- ],
870
- "writable": true
871
- },
872
915
  {
873
916
  "name": "stakeProgram",
874
917
  "address": "Stake11111111111111111111111111111111111111"
@@ -877,82 +920,26 @@ export type StakeController = {
877
920
  "name": "systemProgram",
878
921
  "address": "11111111111111111111111111111111"
879
922
  },
880
- {
881
- "name": "clock",
882
- "address": "SysvarC1ock11111111111111111111111111111111"
883
- },
884
- {
885
- "name": "stakeHistory"
886
- },
887
923
  {
888
924
  "name": "rent",
889
925
  "address": "SysvarRent111111111111111111111111111111111"
890
926
  }
891
927
  ],
892
- "args": [
893
- {
894
- "name": "validator",
895
- "type": "pubkey"
896
- },
897
- {
898
- "name": "epoch",
899
- "type": "u64"
900
- },
901
- {
902
- "name": "stakeIndices",
903
- "type": {
904
- "vec": "u32"
905
- }
906
- }
907
- ]
928
+ "args": []
908
929
  },
909
930
  {
910
- "name": "processUnstakeQueue",
931
+ "name": "initializeVault",
911
932
  "discriminator": [
912
- 6,
913
- 55,
914
- 223,
915
- 1,
916
- 252,
917
- 102,
918
- 55,
919
- 202
933
+ 48,
934
+ 191,
935
+ 163,
936
+ 44,
937
+ 71,
938
+ 129,
939
+ 63,
940
+ 164
920
941
  ],
921
942
  "accounts": [
922
- {
923
- "name": "admin",
924
- "writable": true,
925
- "signer": true
926
- },
927
- {
928
- "name": "controllerState",
929
- "writable": true,
930
- "pda": {
931
- "seeds": [
932
- {
933
- "kind": "const",
934
- "value": [
935
- 115,
936
- 116,
937
- 97,
938
- 107,
939
- 101,
940
- 95,
941
- 99,
942
- 111,
943
- 110,
944
- 116,
945
- 114,
946
- 111,
947
- 108,
948
- 108,
949
- 101,
950
- 114
951
- ]
952
- }
953
- ]
954
- }
955
- },
956
943
  {
957
944
  "name": "vault",
958
945
  "writable": true,
@@ -970,25 +957,9 @@ export type StakeController = {
970
957
  }
971
958
  ]
972
959
  }
973
- }
974
- ],
975
- "args": []
976
- },
977
- {
978
- "name": "requestUnstake",
979
- "discriminator": [
980
- 44,
981
- 154,
982
- 110,
983
- 253,
984
- 160,
985
- 202,
986
- 54,
987
- 34
988
- ],
989
- "accounts": [
960
+ },
990
961
  {
991
- "name": "user",
962
+ "name": "payer",
992
963
  "writable": true,
993
964
  "signer": true
994
965
  },
@@ -1020,31 +991,58 @@ export type StakeController = {
1020
991
  }
1021
992
  ]
1022
993
  }
1023
- }
1024
- ],
1025
- "args": [
994
+ },
1026
995
  {
1027
- "name": "amount",
1028
- "type": "u64"
996
+ "name": "treasuryProgram",
997
+ "address": "98srSwC7RPw2BjUQE5oTuQMEhdWJ2GEK8GBLB4Ei2Awm"
998
+ },
999
+ {
1000
+ "name": "treasury",
1001
+ "writable": true,
1002
+ "pda": {
1003
+ "seeds": [
1004
+ {
1005
+ "kind": "const",
1006
+ "value": [
1007
+ 116,
1008
+ 114,
1009
+ 101,
1010
+ 97,
1011
+ 115,
1012
+ 117,
1013
+ 114,
1014
+ 121
1015
+ ]
1016
+ }
1017
+ ],
1018
+ "program": {
1019
+ "kind": "account",
1020
+ "path": "treasuryProgram"
1021
+ }
1022
+ }
1023
+ },
1024
+ {
1025
+ "name": "systemProgram",
1026
+ "address": "11111111111111111111111111111111"
1029
1027
  }
1030
- ]
1028
+ ],
1029
+ "args": []
1031
1030
  },
1032
1031
  {
1033
- "name": "skimDeactivated",
1032
+ "name": "maintenanceMergeTransients",
1034
1033
  "discriminator": [
1034
+ 171,
1035
+ 33,
1036
+ 27,
1035
1037
  133,
1036
- 188,
1037
- 72,
1038
- 50,
1039
- 24,
1040
- 209,
1041
- 118,
1042
- 50
1038
+ 97,
1039
+ 62,
1040
+ 213,
1041
+ 96
1043
1042
  ],
1044
1043
  "accounts": [
1045
1044
  {
1046
1045
  "name": "admin",
1047
- "writable": true,
1048
1046
  "signer": true
1049
1047
  },
1050
1048
  {
@@ -1066,92 +1064,89 @@ export type StakeController = {
1066
1064
  }
1067
1065
  },
1068
1066
  {
1069
- "name": "deactivatingTransient",
1067
+ "name": "validatorRegistry",
1070
1068
  "writable": true
1071
1069
  },
1072
1070
  {
1073
- "name": "validatorVote"
1071
+ "name": "validatorRegistryProgram",
1072
+ "address": "EgUbYv1coMTXsdRc5HBqTv32SNhTcsRS1nPiUDw5LbQK"
1074
1073
  },
1075
1074
  {
1076
1075
  "name": "stakeProgram",
1077
1076
  "address": "Stake11111111111111111111111111111111111111"
1078
1077
  },
1078
+ {
1079
+ "name": "systemProgram",
1080
+ "address": "11111111111111111111111111111111"
1081
+ },
1079
1082
  {
1080
1083
  "name": "clock",
1081
1084
  "address": "SysvarC1ock11111111111111111111111111111111"
1082
1085
  },
1083
1086
  {
1084
1087
  "name": "stakeHistory"
1085
- }
1086
- ],
1087
- "args": []
1088
- },
1089
- {
1090
- "name": "syncValidatorStakes",
1091
- "discriminator": [
1092
- 40,
1093
- 56,
1094
- 118,
1095
- 52,
1096
- 20,
1097
- 213,
1098
- 229,
1099
- 135
1100
- ],
1101
- "accounts": [
1088
+ },
1102
1089
  {
1103
- "name": "admin",
1104
- "signer": true
1090
+ "name": "rent",
1091
+ "address": "SysvarRent111111111111111111111111111111111"
1105
1092
  },
1106
1093
  {
1107
- "name": "mainValidatorStake",
1094
+ "name": "globalStakeInfo",
1095
+ "writable": true,
1108
1096
  "pda": {
1109
1097
  "seeds": [
1110
1098
  {
1111
1099
  "kind": "const",
1112
1100
  "value": [
1113
- 109,
1101
+ 103,
1102
+ 108,
1103
+ 111,
1104
+ 98,
1114
1105
  97,
1115
- 105,
1116
- 110,
1106
+ 108,
1117
1107
  95,
1118
1108
  115,
1119
1109
  116,
1120
1110
  97,
1121
1111
  107,
1122
- 101
1112
+ 101,
1113
+ 95,
1114
+ 105,
1115
+ 110,
1116
+ 102,
1117
+ 111
1123
1118
  ]
1124
- },
1125
- {
1126
- "kind": "arg",
1127
- "path": "validator"
1128
1119
  }
1129
1120
  ]
1130
1121
  }
1131
- },
1132
- {
1133
- "name": "validatorRegistry",
1134
- "writable": true
1135
1122
  }
1136
1123
  ],
1137
1124
  "args": [
1138
1125
  {
1139
- "name": "validator",
1126
+ "name": "voteAccount",
1140
1127
  "type": "pubkey"
1128
+ },
1129
+ {
1130
+ "name": "startEpoch",
1131
+ "type": "u64"
1141
1132
  }
1142
1133
  ]
1143
1134
  },
1144
1135
  {
1145
- "name": "updateYieldHistory",
1136
+ "name": "processPayCycle",
1137
+ "docs": [
1138
+ "Processes yield payments based on epoch progression and global stake data",
1139
+ "Calculates yield amount proportional to time elapsed and handles epoch transitions"
1140
+ ],
1146
1141
  "discriminator": [
1147
- 105,
1148
- 49,
1149
- 85,
1150
- 192,
1151
- 14,
1152
- 146,
1153
- 32,
1154
- 64
1142
+ 98,
1143
+ 183,
1144
+ 240,
1145
+ 247,
1146
+ 39,
1147
+ 248,
1148
+ 198,
1149
+ 224
1155
1150
  ],
1156
1151
  "accounts": [
1157
1152
  {
@@ -1159,18 +1154,73 @@ export type StakeController = {
1159
1154
  "signer": true
1160
1155
  },
1161
1156
  {
1162
- "name": "yieldHistory",
1157
+ "name": "payCycle",
1163
1158
  "writable": true,
1164
1159
  "pda": {
1165
1160
  "seeds": [
1166
1161
  {
1167
1162
  "kind": "const",
1168
1163
  "value": [
1164
+ 112,
1165
+ 97,
1169
1166
  121,
1167
+ 95,
1168
+ 99,
1169
+ 121,
1170
+ 99,
1171
+ 108,
1172
+ 101
1173
+ ]
1174
+ }
1175
+ ]
1176
+ }
1177
+ },
1178
+ {
1179
+ "name": "globalStakeInfo",
1180
+ "writable": true,
1181
+ "pda": {
1182
+ "seeds": [
1183
+ {
1184
+ "kind": "const",
1185
+ "value": [
1186
+ 103,
1187
+ 108,
1188
+ 111,
1189
+ 98,
1190
+ 97,
1191
+ 108,
1192
+ 95,
1193
+ 115,
1194
+ 116,
1195
+ 97,
1196
+ 107,
1197
+ 101,
1198
+ 95,
1170
1199
  105,
1200
+ 110,
1201
+ 102,
1202
+ 111
1203
+ ]
1204
+ }
1205
+ ]
1206
+ }
1207
+ },
1208
+ {
1209
+ "name": "payRateHistory",
1210
+ "writable": true,
1211
+ "pda": {
1212
+ "seeds": [
1213
+ {
1214
+ "kind": "const",
1215
+ "value": [
1216
+ 112,
1217
+ 97,
1218
+ 121,
1219
+ 95,
1220
+ 114,
1221
+ 97,
1222
+ 116,
1171
1223
  101,
1172
- 108,
1173
- 100,
1174
1224
  95,
1175
1225
  104,
1176
1226
  105,
@@ -1180,6 +1230,187 @@ export type StakeController = {
1180
1230
  114,
1181
1231
  121
1182
1232
  ]
1233
+ }
1234
+ ]
1235
+ }
1236
+ },
1237
+ {
1238
+ "name": "distributionState",
1239
+ "docs": [
1240
+ "The distribution state account from the distribution program"
1241
+ ],
1242
+ "pda": {
1243
+ "seeds": [
1244
+ {
1245
+ "kind": "const",
1246
+ "value": [
1247
+ 100,
1248
+ 105,
1249
+ 115,
1250
+ 116,
1251
+ 114,
1252
+ 105,
1253
+ 98,
1254
+ 117,
1255
+ 116,
1256
+ 105,
1257
+ 111,
1258
+ 110,
1259
+ 95,
1260
+ 115,
1261
+ 116,
1262
+ 97,
1263
+ 116,
1264
+ 101
1265
+ ]
1266
+ }
1267
+ ],
1268
+ "program": {
1269
+ "kind": "const",
1270
+ "value": [
1271
+ 102,
1272
+ 164,
1273
+ 181,
1274
+ 150,
1275
+ 80,
1276
+ 7,
1277
+ 111,
1278
+ 173,
1279
+ 226,
1280
+ 222,
1281
+ 223,
1282
+ 68,
1283
+ 20,
1284
+ 191,
1285
+ 248,
1286
+ 95,
1287
+ 171,
1288
+ 85,
1289
+ 102,
1290
+ 94,
1291
+ 79,
1292
+ 176,
1293
+ 10,
1294
+ 5,
1295
+ 127,
1296
+ 225,
1297
+ 78,
1298
+ 61,
1299
+ 234,
1300
+ 210,
1301
+ 47,
1302
+ 121
1303
+ ]
1304
+ }
1305
+ }
1306
+ },
1307
+ {
1308
+ "name": "liqsolMint",
1309
+ "docs": [
1310
+ "The liqSOL token mint (Token-2022 compatible)"
1311
+ ],
1312
+ "writable": true
1313
+ },
1314
+ {
1315
+ "name": "bucketTokenAccount",
1316
+ "docs": [
1317
+ "The bucket's token account to receive minted liqSOL"
1318
+ ],
1319
+ "writable": true
1320
+ },
1321
+ {
1322
+ "name": "programAuthority",
1323
+ "docs": [
1324
+ "The stake controller authority PDA that will authorize the minting"
1325
+ ],
1326
+ "writable": true,
1327
+ "pda": {
1328
+ "seeds": [
1329
+ {
1330
+ "kind": "const",
1331
+ "value": [
1332
+ 115,
1333
+ 116,
1334
+ 97,
1335
+ 107,
1336
+ 101,
1337
+ 95,
1338
+ 99,
1339
+ 111,
1340
+ 110,
1341
+ 116,
1342
+ 114,
1343
+ 111,
1344
+ 108,
1345
+ 108,
1346
+ 101,
1347
+ 114
1348
+ ]
1349
+ }
1350
+ ]
1351
+ }
1352
+ },
1353
+ {
1354
+ "name": "mintAuthority",
1355
+ "docs": [
1356
+ "The mint authority PDA from liq-sol-token program"
1357
+ ]
1358
+ },
1359
+ {
1360
+ "name": "liqsolProgram",
1361
+ "docs": [
1362
+ "The liq-sol-token program for minting"
1363
+ ],
1364
+ "address": "5MRFSLCkXPEzfR6gkcZCVttq9g83mMUHyTZ85Z3TSpvU"
1365
+ },
1366
+ {
1367
+ "name": "tokenProgram",
1368
+ "docs": [
1369
+ "Token program (Token2022)"
1370
+ ]
1371
+ },
1372
+ {
1373
+ "name": "instructions",
1374
+ "address": "Sysvar1nstructions1111111111111111111111111"
1375
+ }
1376
+ ],
1377
+ "args": []
1378
+ },
1379
+ {
1380
+ "name": "syncValidatorStakes",
1381
+ "discriminator": [
1382
+ 40,
1383
+ 56,
1384
+ 118,
1385
+ 52,
1386
+ 20,
1387
+ 213,
1388
+ 229,
1389
+ 135
1390
+ ],
1391
+ "accounts": [
1392
+ {
1393
+ "name": "admin",
1394
+ "signer": true
1395
+ },
1396
+ {
1397
+ "name": "mainValidatorStake",
1398
+ "pda": {
1399
+ "seeds": [
1400
+ {
1401
+ "kind": "const",
1402
+ "value": [
1403
+ 109,
1404
+ 97,
1405
+ 105,
1406
+ 110,
1407
+ 95,
1408
+ 115,
1409
+ 116,
1410
+ 97,
1411
+ 107,
1412
+ 101
1413
+ ]
1183
1414
  },
1184
1415
  {
1185
1416
  "kind": "arg",
@@ -1190,61 +1421,259 @@ export type StakeController = {
1190
1421
  },
1191
1422
  {
1192
1423
  "name": "validatorRegistry",
1193
- "docs": [
1194
- "Validator registry that contains the validator info"
1195
- ]
1424
+ "writable": true
1425
+ },
1426
+ {
1427
+ "name": "validatorRegistryProgram"
1428
+ },
1429
+ {
1430
+ "name": "stakeHistory"
1431
+ },
1432
+ {
1433
+ "name": "globalStakeInfo",
1434
+ "writable": true,
1435
+ "pda": {
1436
+ "seeds": [
1437
+ {
1438
+ "kind": "const",
1439
+ "value": [
1440
+ 103,
1441
+ 108,
1442
+ 111,
1443
+ 98,
1444
+ 97,
1445
+ 108,
1446
+ 95,
1447
+ 115,
1448
+ 116,
1449
+ 97,
1450
+ 107,
1451
+ 101,
1452
+ 95,
1453
+ 105,
1454
+ 110,
1455
+ 102,
1456
+ 111
1457
+ ]
1458
+ }
1459
+ ]
1460
+ }
1196
1461
  }
1197
1462
  ],
1198
1463
  "args": [
1199
1464
  {
1200
1465
  "name": "validator",
1201
1466
  "type": "pubkey"
1467
+ }
1468
+ ]
1469
+ },
1470
+ {
1471
+ "name": "transferFromBucket",
1472
+ "docs": [
1473
+ "Transfer liqSOL from the bucket to a destination wallet"
1474
+ ],
1475
+ "discriminator": [
1476
+ 3,
1477
+ 165,
1478
+ 191,
1479
+ 199,
1480
+ 242,
1481
+ 233,
1482
+ 248,
1483
+ 16
1484
+ ],
1485
+ "accounts": [
1486
+ {
1487
+ "name": "admin",
1488
+ "signer": true
1202
1489
  },
1203
1490
  {
1204
- "name": "rewardsEarned",
1491
+ "name": "bucketAuthority",
1492
+ "docs": [
1493
+ "The bucket authority PDA that owns the token account"
1494
+ ],
1495
+ "pda": {
1496
+ "seeds": [
1497
+ {
1498
+ "kind": "const",
1499
+ "value": [
1500
+ 108,
1501
+ 105,
1502
+ 113,
1503
+ 115,
1504
+ 111,
1505
+ 108,
1506
+ 95,
1507
+ 98,
1508
+ 117,
1509
+ 99,
1510
+ 107,
1511
+ 101,
1512
+ 116
1513
+ ]
1514
+ }
1515
+ ]
1516
+ }
1517
+ },
1518
+ {
1519
+ "name": "bucketTokenAccount",
1520
+ "docs": [
1521
+ "The bucket's token account holding liqSOL"
1522
+ ],
1523
+ "writable": true
1524
+ },
1525
+ {
1526
+ "name": "destinationTokenAccount",
1527
+ "docs": [
1528
+ "Destination token account to send liqSOL to"
1529
+ ],
1530
+ "writable": true
1531
+ },
1532
+ {
1533
+ "name": "mint",
1534
+ "docs": [
1535
+ "The liqSOL mint"
1536
+ ]
1537
+ },
1538
+ {
1539
+ "name": "tokenProgram"
1540
+ }
1541
+ ],
1542
+ "args": [
1543
+ {
1544
+ "name": "amount",
1205
1545
  "type": "u64"
1206
1546
  }
1207
1547
  ]
1548
+ },
1549
+ {
1550
+ "name": "updateGlobalStakeInfo",
1551
+ "discriminator": [
1552
+ 16,
1553
+ 246,
1554
+ 76,
1555
+ 203,
1556
+ 160,
1557
+ 194,
1558
+ 10,
1559
+ 93
1560
+ ],
1561
+ "accounts": [
1562
+ {
1563
+ "name": "admin",
1564
+ "signer": true
1565
+ },
1566
+ {
1567
+ "name": "globalStakeInfo",
1568
+ "writable": true,
1569
+ "pda": {
1570
+ "seeds": [
1571
+ {
1572
+ "kind": "const",
1573
+ "value": [
1574
+ 103,
1575
+ 108,
1576
+ 111,
1577
+ 98,
1578
+ 97,
1579
+ 108,
1580
+ 95,
1581
+ 115,
1582
+ 116,
1583
+ 97,
1584
+ 107,
1585
+ 101,
1586
+ 95,
1587
+ 105,
1588
+ 110,
1589
+ 102,
1590
+ 111
1591
+ ]
1592
+ }
1593
+ ]
1594
+ }
1595
+ },
1596
+ {
1597
+ "name": "validatorRegistry",
1598
+ "writable": true
1599
+ },
1600
+ {
1601
+ "name": "payCycle",
1602
+ "writable": true,
1603
+ "pda": {
1604
+ "seeds": [
1605
+ {
1606
+ "kind": "const",
1607
+ "value": [
1608
+ 112,
1609
+ 97,
1610
+ 121,
1611
+ 95,
1612
+ 99,
1613
+ 121,
1614
+ 99,
1615
+ 108,
1616
+ 101
1617
+ ]
1618
+ }
1619
+ ]
1620
+ }
1621
+ }
1622
+ ],
1623
+ "args": []
1208
1624
  }
1209
1625
  ],
1210
1626
  "accounts": [
1211
1627
  {
1212
- "name": "stakeControllerState",
1628
+ "name": "globalStakeInfo",
1213
1629
  "discriminator": [
1214
- 218,
1215
- 168,
1216
- 114,
1217
- 136,
1218
- 80,
1219
- 186,
1220
- 29,
1221
- 218
1630
+ 149,
1631
+ 10,
1632
+ 172,
1633
+ 51,
1634
+ 100,
1635
+ 33,
1636
+ 71,
1637
+ 52
1222
1638
  ]
1223
1639
  },
1224
1640
  {
1225
- "name": "treasuryConfig",
1641
+ "name": "payCycle",
1226
1642
  "discriminator": [
1227
- 124,
1228
- 54,
1229
- 212,
1230
- 227,
1231
- 213,
1232
- 189,
1233
- 168,
1234
- 41
1643
+ 119,
1644
+ 127,
1645
+ 39,
1646
+ 70,
1647
+ 134,
1648
+ 173,
1649
+ 90,
1650
+ 225
1235
1651
  ]
1236
1652
  },
1237
1653
  {
1238
- "name": "validatorEpochInfo",
1654
+ "name": "payRateHistory",
1239
1655
  "discriminator": [
1240
- 242,
1241
- 22,
1242
- 169,
1243
- 20,
1244
- 113,
1245
- 82,
1246
- 73,
1247
- 139
1656
+ 139,
1657
+ 8,
1658
+ 65,
1659
+ 111,
1660
+ 71,
1661
+ 41,
1662
+ 187,
1663
+ 218
1664
+ ]
1665
+ },
1666
+ {
1667
+ "name": "stakeControllerState",
1668
+ "discriminator": [
1669
+ 218,
1670
+ 168,
1671
+ 114,
1672
+ 136,
1673
+ 80,
1674
+ 186,
1675
+ 29,
1676
+ 218
1248
1677
  ]
1249
1678
  },
1250
1679
  {
@@ -1259,19 +1688,6 @@ export type StakeController = {
1259
1688
  163,
1260
1689
  230
1261
1690
  ]
1262
- },
1263
- {
1264
- "name": "validatorYieldHistory",
1265
- "discriminator": [
1266
- 236,
1267
- 4,
1268
- 64,
1269
- 157,
1270
- 209,
1271
- 103,
1272
- 197,
1273
- 75
1274
- ]
1275
1691
  }
1276
1692
  ],
1277
1693
  "events": [
@@ -1300,111 +1716,123 @@ export type StakeController = {
1300
1716
  19,
1301
1717
  97
1302
1718
  ]
1303
- },
1304
- {
1305
- "name": "yieldHistoryUpdated",
1306
- "discriminator": [
1307
- 96,
1308
- 28,
1309
- 163,
1310
- 1,
1311
- 10,
1312
- 117,
1313
- 83,
1314
- 152
1315
- ]
1316
1719
  }
1317
1720
  ],
1318
1721
  "errors": [
1319
1722
  {
1320
1723
  "code": 6000,
1321
- "name": "insufficientFunds",
1322
- "msg": "Insufficient funds"
1724
+ "name": "destinationAccountDoesNotExist",
1725
+ "msg": "Destination stake account does not exist"
1323
1726
  },
1324
1727
  {
1325
1728
  "code": 6001,
1326
- "name": "invalidValidator",
1327
- "msg": "Invalid validator"
1729
+ "name": "sourceAccountDoesNotExist",
1730
+ "msg": "Source stake account does not exist"
1328
1731
  },
1329
1732
  {
1330
1733
  "code": 6002,
1331
- "name": "noSuitableValidator",
1332
- "msg": "No suitable validator found"
1734
+ "name": "invalidDestinationOwner",
1735
+ "msg": "Destination account not owned by stake program"
1333
1736
  },
1334
1737
  {
1335
1738
  "code": 6003,
1336
- "name": "ticketNotFound",
1337
- "msg": "Unstake ticket not found"
1739
+ "name": "invalidSourceOwner",
1740
+ "msg": "Source account not owned by stake program"
1338
1741
  },
1339
1742
  {
1340
1743
  "code": 6004,
1341
- "name": "ticketNotClaimable",
1342
- "msg": "Ticket not claimable yet"
1744
+ "name": "clockBorrowFailed",
1745
+ "msg": "Failed to borrow clock data"
1343
1746
  },
1344
1747
  {
1345
1748
  "code": 6005,
1346
- "name": "unauthorized",
1347
- "msg": "unauthorized"
1749
+ "name": "clockDeserializeFailed",
1750
+ "msg": "Failed to deserialize clock"
1348
1751
  },
1349
1752
  {
1350
1753
  "code": 6006,
1351
- "name": "arithmeticOverflow",
1352
- "msg": "Arithmetic overflow"
1754
+ "name": "destinationAnalysisFailed",
1755
+ "msg": "Failed to analyze destination stake account"
1353
1756
  },
1354
1757
  {
1355
1758
  "code": 6007,
1356
- "name": "accountAlreadyExists",
1357
- "msg": "Account already exists"
1759
+ "name": "sourceAnalysisFailed",
1760
+ "msg": "Failed to analyze source stake account"
1358
1761
  },
1359
1762
  {
1360
1763
  "code": 6008,
1361
- "name": "invalidStakeAccount",
1362
- "msg": "Invalid stake account"
1764
+ "name": "destinationStillActivating",
1765
+ "msg": "Destination stake is still activating"
1363
1766
  },
1364
1767
  {
1365
1768
  "code": 6009,
1366
- "name": "invalidThreshold",
1367
- "msg": "Invalid threshold value"
1769
+ "name": "destinationDeactivating",
1770
+ "msg": "Destination stake is deactivating"
1368
1771
  },
1369
1772
  {
1370
1773
  "code": 6010,
1371
- "name": "invalidAccountData",
1372
- "msg": "Invalid account data"
1774
+ "name": "sourceStillActivating",
1775
+ "msg": "Source stake is still activating"
1373
1776
  },
1374
1777
  {
1375
1778
  "code": 6011,
1376
- "name": "invalidVoteAccount",
1377
- "msg": "Invalid vote account"
1779
+ "name": "sourceDeactivating",
1780
+ "msg": "Source stake is deactivating"
1378
1781
  },
1379
1782
  {
1380
1783
  "code": 6012,
1381
- "name": "stakesNotYetActive",
1382
- "msg": "Stakes not yet active"
1784
+ "name": "destinationBorrowFailed",
1785
+ "msg": "Failed to borrow destination account data"
1383
1786
  },
1384
1787
  {
1385
1788
  "code": 6013,
1386
- "name": "invalidEpoch",
1387
- "msg": "Invalid epoch"
1789
+ "name": "destinationParseFailed",
1790
+ "msg": "Failed to parse destination stake state"
1388
1791
  },
1389
1792
  {
1390
1793
  "code": 6014,
1391
- "name": "epochAlreadyResolved",
1392
- "msg": "Epoch already resolved"
1794
+ "name": "sourceBorrowFailed",
1795
+ "msg": "Failed to borrow source account data"
1393
1796
  },
1394
1797
  {
1395
1798
  "code": 6015,
1396
- "name": "mergeFailed",
1397
- "msg": "Merge failed"
1799
+ "name": "sourceParseFailed",
1800
+ "msg": "Failed to parse source stake state"
1398
1801
  },
1399
1802
  {
1400
1803
  "code": 6016,
1401
- "name": "reservePoolNotInitialized",
1402
- "msg": "Reserve pool not initialized"
1804
+ "name": "differentValidators",
1805
+ "msg": "Stakes are delegated to different validators"
1403
1806
  },
1404
1807
  {
1405
1808
  "code": 6017,
1406
- "name": "invalidEphemeralAccount",
1407
- "msg": "Invalid ephemeral account"
1809
+ "name": "differentStakers",
1810
+ "msg": "Stakes have different staker authorities"
1811
+ },
1812
+ {
1813
+ "code": 6018,
1814
+ "name": "differentWithdrawers",
1815
+ "msg": "Stakes have different withdrawer authorities"
1816
+ },
1817
+ {
1818
+ "code": 6019,
1819
+ "name": "authoritiesNotFound",
1820
+ "msg": "Could not extract authorities from accounts"
1821
+ },
1822
+ {
1823
+ "code": 6020,
1824
+ "name": "mergeInstructionFailed",
1825
+ "msg": "Merge instruction failed"
1826
+ },
1827
+ {
1828
+ "code": 6021,
1829
+ "name": "epochRewardsActive",
1830
+ "msg": "Epoch rewards distribution is active - stake operations blocked"
1831
+ },
1832
+ {
1833
+ "code": 6022,
1834
+ "name": "differentCreditsObserved",
1835
+ "msg": "Stakes have different credits_observed - cannot merge until both earn same rewards"
1408
1836
  }
1409
1837
  ],
1410
1838
  "types": [
@@ -1433,153 +1861,95 @@ export type StakeController = {
1433
1861
  }
1434
1862
  },
1435
1863
  {
1436
- "name": "stakeControllerState",
1864
+ "name": "globalStakeInfo",
1437
1865
  "type": {
1438
1866
  "kind": "struct",
1439
1867
  "fields": [
1440
1868
  {
1441
- "name": "authority",
1442
- "type": "pubkey"
1869
+ "name": "currentActiveStake",
1870
+ "type": "u64"
1443
1871
  },
1444
1872
  {
1445
- "name": "vaultInitialized",
1446
- "type": "bool"
1873
+ "name": "actualSystemYieldReceived",
1874
+ "type": "u64"
1447
1875
  },
1448
1876
  {
1449
- "name": "reservePoolInitialized",
1450
- "type": "bool"
1877
+ "name": "solSystemPayRate",
1878
+ "type": "u64"
1451
1879
  },
1452
1880
  {
1453
- "name": "nextTicketId",
1881
+ "name": "totalPaidOutThisEpoch",
1454
1882
  "type": "u64"
1455
1883
  },
1456
1884
  {
1457
- "name": "totalPendingUnstake",
1885
+ "name": "epochPayoutDelta",
1886
+ "type": "i64"
1887
+ },
1888
+ {
1889
+ "name": "lastUpdatedEpoch",
1458
1890
  "type": "u64"
1459
1891
  },
1460
1892
  {
1461
- "name": "unstakeTickets",
1893
+ "name": "lastDistributionEpoch",
1462
1894
  "type": {
1463
- "vec": {
1464
- "defined": {
1465
- "name": "unstakeTicket"
1466
- }
1467
- }
1895
+ "option": "u64"
1468
1896
  }
1469
1897
  },
1470
1898
  {
1471
- "name": "bump",
1472
- "type": "u8"
1473
- }
1474
- ]
1475
- }
1476
- },
1477
- {
1478
- "name": "stakesMerged",
1479
- "type": {
1480
- "kind": "struct",
1481
- "fields": [
1482
- {
1483
- "name": "validator",
1484
- "type": "pubkey"
1899
+ "name": "lastDistributionSlot",
1900
+ "type": {
1901
+ "option": "u64"
1902
+ }
1485
1903
  },
1486
1904
  {
1487
- "name": "epoch",
1905
+ "name": "lastDeactivationEpoch",
1488
1906
  "type": "u64"
1489
1907
  },
1490
1908
  {
1491
- "name": "count",
1492
- "type": "u32"
1909
+ "name": "lastRebalanceEpoch",
1910
+ "type": "u64"
1493
1911
  },
1494
1912
  {
1495
- "name": "amount",
1913
+ "name": "lastMergeTransientsEpoch",
1496
1914
  "type": "u64"
1497
- }
1498
- ]
1499
- }
1500
- },
1501
- {
1502
- "name": "treasuryConfig",
1503
- "type": {
1504
- "kind": "struct",
1505
- "fields": [
1915
+ },
1506
1916
  {
1507
- "name": "authorities",
1508
- "type": {
1509
- "vec": "pubkey"
1510
- }
1917
+ "name": "currentMergeProcessingEpoch",
1918
+ "type": "u64"
1511
1919
  },
1512
1920
  {
1513
- "name": "bump",
1921
+ "name": "validatorsProcessedThisEpoch",
1514
1922
  "type": "u8"
1515
- }
1516
- ]
1517
- }
1518
- },
1519
- {
1520
- "name": "unstakeStatus",
1521
- "type": {
1522
- "kind": "enum",
1523
- "variants": [
1524
- {
1525
- "name": "pending"
1526
1923
  },
1527
1924
  {
1528
- "name": "processing"
1925
+ "name": "validatorsMergeProcessedThisEpoch",
1926
+ "type": "u8"
1529
1927
  },
1530
1928
  {
1531
- "name": "claimable"
1929
+ "name": "distributionInProgress",
1930
+ "type": "bool"
1532
1931
  },
1533
1932
  {
1534
- "name": "claimed"
1535
- }
1536
- ]
1537
- }
1538
- },
1539
- {
1540
- "name": "unstakeTicket",
1541
- "type": {
1542
- "kind": "struct",
1543
- "fields": [
1544
- {
1545
- "name": "ticketId",
1933
+ "name": "transientActiveStake",
1546
1934
  "type": "u64"
1547
1935
  },
1548
1936
  {
1549
- "name": "owner",
1550
- "type": "pubkey"
1551
- },
1552
- {
1553
- "name": "amount",
1937
+ "name": "totalFeesDeposited",
1554
1938
  "type": "u64"
1555
1939
  },
1556
1940
  {
1557
- "name": "validator",
1558
- "type": "pubkey"
1559
- },
1560
- {
1561
- "name": "createdEpoch",
1941
+ "name": "totalCumulativePayout",
1562
1942
  "type": "u64"
1563
1943
  },
1564
1944
  {
1565
- "name": "deactivationStartEpoch",
1566
- "type": {
1567
- "option": "u64"
1568
- }
1569
- },
1570
- {
1571
- "name": "status",
1572
- "type": {
1573
- "defined": {
1574
- "name": "unstakeStatus"
1575
- }
1576
- }
1945
+ "name": "bump",
1946
+ "type": "u8"
1577
1947
  }
1578
1948
  ]
1579
1949
  }
1580
1950
  },
1581
1951
  {
1582
- "name": "validatorEpochInfo",
1952
+ "name": "payCycle",
1583
1953
  "type": {
1584
1954
  "kind": "struct",
1585
1955
  "fields": [
@@ -1588,19 +1958,19 @@ export type StakeController = {
1588
1958
  "type": "u64"
1589
1959
  },
1590
1960
  {
1591
- "name": "maxIndex",
1592
- "type": "u32"
1961
+ "name": "totalYield",
1962
+ "type": "u64"
1593
1963
  },
1594
1964
  {
1595
- "name": "resolved",
1596
- "type": "bool"
1965
+ "name": "timestamp",
1966
+ "type": "i64"
1597
1967
  },
1598
1968
  {
1599
- "name": "totalStakeAmount",
1600
- "type": "u64"
1969
+ "name": "fulfilled",
1970
+ "type": "bool"
1601
1971
  },
1602
1972
  {
1603
- "name": "rewardsEarned",
1973
+ "name": "lastSlotPaidFor",
1604
1974
  "type": "u64"
1605
1975
  },
1606
1976
  {
@@ -1611,64 +1981,56 @@ export type StakeController = {
1611
1981
  }
1612
1982
  },
1613
1983
  {
1614
- "name": "validatorInfo",
1984
+ "name": "payRateEntry",
1615
1985
  "type": {
1616
1986
  "kind": "struct",
1617
1987
  "fields": [
1618
1988
  {
1619
- "name": "voteAccount",
1620
- "type": "pubkey"
1621
- },
1622
- {
1623
- "name": "name",
1624
- "type": {
1625
- "array": [
1626
- "u8",
1627
- 32
1628
- ]
1629
- }
1630
- },
1631
- {
1632
- "name": "performanceScore",
1633
- "type": "u32"
1634
- },
1635
- {
1636
- "name": "activeStake",
1637
- "type": "u64"
1638
- },
1639
- {
1640
- "name": "activatingStake",
1641
- "type": "u64"
1642
- },
1643
- {
1644
- "name": "deactivatingStake",
1645
- "type": "u64"
1989
+ "name": "timestamp",
1990
+ "type": "i64"
1646
1991
  },
1647
1992
  {
1648
- "name": "commission",
1993
+ "name": "scaledRate",
1649
1994
  "type": "u64"
1650
- },
1995
+ }
1996
+ ]
1997
+ }
1998
+ },
1999
+ {
2000
+ "name": "payRateHistory",
2001
+ "type": {
2002
+ "kind": "struct",
2003
+ "fields": [
1651
2004
  {
1652
- "name": "lastUpdatedEpoch",
1653
- "type": "u64"
2005
+ "name": "currentIndex",
2006
+ "type": "u16"
1654
2007
  },
1655
2008
  {
1656
- "name": "initialStake",
2009
+ "name": "totalEntriesAdded",
1657
2010
  "type": "u64"
1658
2011
  },
1659
2012
  {
1660
- "name": "previousEpochActiveStake",
1661
- "type": "u64"
2013
+ "name": "entries",
2014
+ "type": {
2015
+ "array": [
2016
+ {
2017
+ "defined": {
2018
+ "name": "payRateEntry"
2019
+ }
2020
+ },
2021
+ 50
2022
+ ]
2023
+ }
1662
2024
  },
1663
2025
  {
1664
- "name": "previousEpochSnapshot",
1665
- "type": "u64"
2026
+ "name": "bump",
2027
+ "type": "u8"
1666
2028
  }
1667
2029
  ]
1668
2030
  }
1669
2031
  },
1670
2032
  {
1671
- "name": "validatorRegistry",
2033
+ "name": "stakeControllerState",
1672
2034
  "type": {
1673
2035
  "kind": "struct",
1674
2036
  "fields": [
@@ -1677,18 +2039,12 @@ export type StakeController = {
1677
2039
  "type": "pubkey"
1678
2040
  },
1679
2041
  {
1680
- "name": "validators",
1681
- "type": {
1682
- "vec": {
1683
- "defined": {
1684
- "name": "validatorInfo"
1685
- }
1686
- }
1687
- }
2042
+ "name": "vaultInitialized",
2043
+ "type": "bool"
1688
2044
  },
1689
2045
  {
1690
- "name": "lastUpdateEpoch",
1691
- "type": "u64"
2046
+ "name": "reservePoolInitialized",
2047
+ "type": "bool"
1692
2048
  },
1693
2049
  {
1694
2050
  "name": "bump",
@@ -1698,7 +2054,7 @@ export type StakeController = {
1698
2054
  }
1699
2055
  },
1700
2056
  {
1701
- "name": "validatorYieldHistory",
2057
+ "name": "stakesMerged",
1702
2058
  "type": {
1703
2059
  "kind": "struct",
1704
2060
  "fields": [
@@ -1707,85 +2063,90 @@ export type StakeController = {
1707
2063
  "type": "pubkey"
1708
2064
  },
1709
2065
  {
1710
- "name": "currentIndex",
1711
- "type": "u8"
1712
- },
1713
- {
1714
- "name": "entries",
1715
- "type": {
1716
- "array": [
1717
- {
1718
- "defined": {
1719
- "name": "yieldEntry"
1720
- }
1721
- },
1722
- 20
1723
- ]
1724
- }
1725
- },
1726
- {
1727
- "name": "lastSnapshotEpoch",
2066
+ "name": "epoch",
1728
2067
  "type": "u64"
1729
2068
  },
1730
2069
  {
1731
- "name": "lastSnapshotStake",
1732
- "type": "u64"
2070
+ "name": "count",
2071
+ "type": "u32"
1733
2072
  },
1734
2073
  {
1735
- "name": "bump",
1736
- "type": "u8"
2074
+ "name": "amount",
2075
+ "type": "u64"
1737
2076
  }
1738
2077
  ]
1739
2078
  }
1740
2079
  },
1741
2080
  {
1742
- "name": "yieldEntry",
2081
+ "name": "validatorInfo",
1743
2082
  "type": {
1744
2083
  "kind": "struct",
1745
2084
  "fields": [
1746
2085
  {
1747
- "name": "epoch",
1748
- "type": "u64"
2086
+ "name": "voteAccount",
2087
+ "type": "pubkey"
1749
2088
  },
1750
2089
  {
1751
- "name": "apyBps",
2090
+ "name": "vpp",
1752
2091
  "type": "u32"
1753
2092
  },
1754
2093
  {
1755
- "name": "rewardsEarned",
2094
+ "name": "currentActiveStake",
1756
2095
  "type": "u64"
1757
2096
  },
1758
2097
  {
1759
- "name": "activeStake",
2098
+ "name": "epochReward",
1760
2099
  "type": "u64"
1761
2100
  },
1762
2101
  {
1763
- "name": "isValid",
1764
- "type": "bool"
2102
+ "name": "transientActiveStake",
2103
+ "type": "u64"
2104
+ },
2105
+ {
2106
+ "name": "lastChainSyncEpoch",
2107
+ "type": "u64"
2108
+ },
2109
+ {
2110
+ "name": "lastUpdatedSlot",
2111
+ "type": "u64"
2112
+ },
2113
+ {
2114
+ "name": "maxResolvedEpochDeactivations",
2115
+ "type": "u64"
2116
+ },
2117
+ {
2118
+ "name": "maxResolvedActivatingStake",
2119
+ "type": "u64"
1765
2120
  }
1766
2121
  ]
1767
2122
  }
1768
2123
  },
1769
2124
  {
1770
- "name": "yieldHistoryUpdated",
2125
+ "name": "validatorRegistry",
1771
2126
  "type": {
1772
2127
  "kind": "struct",
1773
2128
  "fields": [
1774
2129
  {
1775
- "name": "validator",
2130
+ "name": "authority",
1776
2131
  "type": "pubkey"
1777
2132
  },
1778
2133
  {
1779
- "name": "epoch",
1780
- "type": "u64"
2134
+ "name": "validators",
2135
+ "type": {
2136
+ "vec": {
2137
+ "defined": {
2138
+ "name": "validatorInfo"
2139
+ }
2140
+ }
2141
+ }
1781
2142
  },
1782
2143
  {
1783
- "name": "apyBps",
1784
- "type": "u32"
2144
+ "name": "lastUpdateEpoch",
2145
+ "type": "u64"
1785
2146
  },
1786
2147
  {
1787
- "name": "rewardsEarned",
1788
- "type": "u64"
2148
+ "name": "bump",
2149
+ "type": "u8"
1789
2150
  }
1790
2151
  ]
1791
2152
  }