@zebec-network/zebec-stake-sdk 1.0.3 → 1.0.5

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.
package/README.md CHANGED
@@ -1 +1,19 @@
1
1
  # ZBCN Stake Sdk
2
+
3
+ ## Installation
4
+
5
+ ```
6
+ yarn add @zebec-network/zebec-stake-sdk
7
+ ```
8
+
9
+ ```
10
+ npm install @zebec-network/zebec-stake-sdk
11
+ ```
12
+
13
+ ## Development
14
+
15
+ To build the package
16
+
17
+ ```
18
+ yarn build
19
+ ```
@@ -5,7 +5,7 @@
5
5
  * IDL can be found at `target/idl/zebec_stake.json`.
6
6
  */
7
7
  export type ZebecStake = {
8
- address: "Fe5ymSEjtQ229rmfhYkNtWR1dS7ctFwoSCN7hibhDLA6";
8
+ address: "zSTKzGLiN6T6EVzhBiL6sjULXMahDavAS2p4R62afGv";
9
9
  metadata: {
10
10
  name: "zebecStake";
11
11
  version: "0.1.0";
@@ -954,6 +954,20 @@ export type ZebecStake = {
954
954
  },
955
955
  {
956
956
  name: "lockup";
957
+ writable: true;
958
+ pda: {
959
+ seeds: [
960
+ {
961
+ kind: "const";
962
+ value: [122, 101, 98, 101, 99, 95, 108, 111, 99, 107, 117, 112];
963
+ },
964
+ {
965
+ kind: "account";
966
+ path: "lockup.stake_info.name";
967
+ account: "lockup";
968
+ }
969
+ ];
970
+ };
957
971
  },
958
972
  {
959
973
  name: "userNonce";
@@ -1088,6 +1102,21 @@ export type ZebecStake = {
1088
1102
  code: 6011;
1089
1103
  name: "rewardIsZero";
1090
1104
  msg: "Reward Is Zero";
1105
+ },
1106
+ {
1107
+ code: 6012;
1108
+ name: "stakeAlreadyClaimed";
1109
+ msg: "Stake Already Claimed";
1110
+ },
1111
+ {
1112
+ code: 6013;
1113
+ name: "stakeNotClaimable";
1114
+ msg: "Stake Not Claimable";
1115
+ },
1116
+ {
1117
+ code: 6014;
1118
+ name: "minimumStakeNotMet";
1119
+ msg: "minimum Stake Not Met";
1091
1120
  }
1092
1121
  ];
1093
1122
  types: [
@@ -1140,6 +1169,10 @@ export type ZebecStake = {
1140
1169
  name: "feeVault";
1141
1170
  type: "pubkey";
1142
1171
  },
1172
+ {
1173
+ name: "minimumStake";
1174
+ type: "u64";
1175
+ },
1143
1176
  {
1144
1177
  name: "durationMap";
1145
1178
  type: {
@@ -1218,6 +1251,10 @@ export type ZebecStake = {
1218
1251
  name: "creator";
1219
1252
  type: "pubkey";
1220
1253
  },
1254
+ {
1255
+ name: "minimumStake";
1256
+ type: "u64";
1257
+ },
1221
1258
  {
1222
1259
  name: "durationMap";
1223
1260
  type: {
@@ -1307,6 +1344,14 @@ export type ZebecStake = {
1307
1344
  {
1308
1345
  name: "lockPeriod";
1309
1346
  type: "i64";
1347
+ },
1348
+ {
1349
+ name: "staker";
1350
+ type: "pubkey";
1351
+ },
1352
+ {
1353
+ name: "lockup";
1354
+ type: "pubkey";
1310
1355
  }
1311
1356
  ];
1312
1357
  };
@@ -1,5 +1,5 @@
1
1
  {
2
- "address": "Fe5ymSEjtQ229rmfhYkNtWR1dS7ctFwoSCN7hibhDLA6",
2
+ "address": "zSTKzGLiN6T6EVzhBiL6sjULXMahDavAS2p4R62afGv",
3
3
  "metadata": {
4
4
  "name": "zebec_stake",
5
5
  "version": "0.1.0",
@@ -9,7 +9,16 @@
9
9
  "instructions": [
10
10
  {
11
11
  "name": "init_lockup",
12
- "discriminator": [6, 96, 207, 185, 103, 62, 239, 168],
12
+ "discriminator": [
13
+ 6,
14
+ 96,
15
+ 207,
16
+ 185,
17
+ 103,
18
+ 62,
19
+ 239,
20
+ 168
21
+ ],
13
22
  "accounts": [
14
23
  {
15
24
  "name": "creator",
@@ -23,7 +32,20 @@
23
32
  "seeds": [
24
33
  {
25
34
  "kind": "const",
26
- "value": [122, 101, 98, 101, 99, 95, 108, 111, 99, 107, 117, 112]
35
+ "value": [
36
+ 122,
37
+ 101,
38
+ 98,
39
+ 101,
40
+ 99,
41
+ 95,
42
+ 108,
43
+ 111,
44
+ 99,
45
+ 107,
46
+ 117,
47
+ 112
48
+ ]
27
49
  },
28
50
  {
29
51
  "kind": "arg",
@@ -39,7 +61,19 @@
39
61
  "seeds": [
40
62
  {
41
63
  "kind": "const",
42
- "value": [115, 116, 97, 107, 101, 95, 118, 97, 117, 108, 116]
64
+ "value": [
65
+ 115,
66
+ 116,
67
+ 97,
68
+ 107,
69
+ 101,
70
+ 95,
71
+ 118,
72
+ 97,
73
+ 117,
74
+ 108,
75
+ 116
76
+ ]
43
77
  },
44
78
  {
45
79
  "kind": "account",
@@ -55,7 +89,20 @@
55
89
  "seeds": [
56
90
  {
57
91
  "kind": "const",
58
- "value": [114, 101, 119, 97, 114, 100, 95, 118, 97, 117, 108, 116]
92
+ "value": [
93
+ 114,
94
+ 101,
95
+ 119,
96
+ 97,
97
+ 114,
98
+ 100,
99
+ 95,
100
+ 118,
101
+ 97,
102
+ 117,
103
+ 108,
104
+ 116
105
+ ]
59
106
  },
60
107
  {
61
108
  "kind": "account",
@@ -96,7 +143,16 @@
96
143
  },
97
144
  {
98
145
  "name": "stake_zbcn",
99
- "discriminator": [93, 162, 156, 54, 43, 11, 15, 122],
146
+ "discriminator": [
147
+ 93,
148
+ 162,
149
+ 156,
150
+ 54,
151
+ 43,
152
+ 11,
153
+ 15,
154
+ 122
155
+ ],
100
156
  "accounts": [
101
157
  {
102
158
  "name": "staker",
@@ -110,7 +166,20 @@
110
166
  "seeds": [
111
167
  {
112
168
  "kind": "const",
113
- "value": [122, 101, 98, 101, 99, 95, 108, 111, 99, 107, 117, 112]
169
+ "value": [
170
+ 122,
171
+ 101,
172
+ 98,
173
+ 101,
174
+ 99,
175
+ 95,
176
+ 108,
177
+ 111,
178
+ 99,
179
+ 107,
180
+ 117,
181
+ 112
182
+ ]
114
183
  },
115
184
  {
116
185
  "kind": "account",
@@ -171,8 +240,38 @@
171
240
  {
172
241
  "kind": "const",
173
242
  "value": [
174
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
175
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
243
+ 6,
244
+ 221,
245
+ 246,
246
+ 225,
247
+ 215,
248
+ 101,
249
+ 161,
250
+ 147,
251
+ 217,
252
+ 203,
253
+ 225,
254
+ 70,
255
+ 206,
256
+ 235,
257
+ 121,
258
+ 172,
259
+ 28,
260
+ 180,
261
+ 133,
262
+ 237,
263
+ 95,
264
+ 91,
265
+ 55,
266
+ 145,
267
+ 58,
268
+ 140,
269
+ 245,
270
+ 133,
271
+ 126,
272
+ 255,
273
+ 0,
274
+ 169
176
275
  ]
177
276
  },
178
277
  {
@@ -183,8 +282,38 @@
183
282
  "program": {
184
283
  "kind": "const",
185
284
  "value": [
186
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
187
- 132, 4, 142, 123, 216, 219, 233, 248, 89
285
+ 140,
286
+ 151,
287
+ 37,
288
+ 143,
289
+ 78,
290
+ 36,
291
+ 137,
292
+ 241,
293
+ 187,
294
+ 61,
295
+ 16,
296
+ 41,
297
+ 20,
298
+ 142,
299
+ 13,
300
+ 131,
301
+ 11,
302
+ 90,
303
+ 19,
304
+ 153,
305
+ 218,
306
+ 255,
307
+ 16,
308
+ 132,
309
+ 4,
310
+ 142,
311
+ 123,
312
+ 216,
313
+ 219,
314
+ 233,
315
+ 248,
316
+ 89
188
317
  ]
189
318
  }
190
319
  }
@@ -196,7 +325,19 @@
196
325
  "seeds": [
197
326
  {
198
327
  "kind": "const",
199
- "value": [115, 116, 97, 107, 101, 95, 118, 97, 117, 108, 116]
328
+ "value": [
329
+ 115,
330
+ 116,
331
+ 97,
332
+ 107,
333
+ 101,
334
+ 95,
335
+ 118,
336
+ 97,
337
+ 117,
338
+ 108,
339
+ 116
340
+ ]
200
341
  },
201
342
  {
202
343
  "kind": "account",
@@ -217,8 +358,38 @@
217
358
  {
218
359
  "kind": "const",
219
360
  "value": [
220
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
221
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
361
+ 6,
362
+ 221,
363
+ 246,
364
+ 225,
365
+ 215,
366
+ 101,
367
+ 161,
368
+ 147,
369
+ 217,
370
+ 203,
371
+ 225,
372
+ 70,
373
+ 206,
374
+ 235,
375
+ 121,
376
+ 172,
377
+ 28,
378
+ 180,
379
+ 133,
380
+ 237,
381
+ 95,
382
+ 91,
383
+ 55,
384
+ 145,
385
+ 58,
386
+ 140,
387
+ 245,
388
+ 133,
389
+ 126,
390
+ 255,
391
+ 0,
392
+ 169
222
393
  ]
223
394
  },
224
395
  {
@@ -229,8 +400,38 @@
229
400
  "program": {
230
401
  "kind": "const",
231
402
  "value": [
232
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
233
- 132, 4, 142, 123, 216, 219, 233, 248, 89
403
+ 140,
404
+ 151,
405
+ 37,
406
+ 143,
407
+ 78,
408
+ 36,
409
+ 137,
410
+ 241,
411
+ 187,
412
+ 61,
413
+ 16,
414
+ 41,
415
+ 20,
416
+ 142,
417
+ 13,
418
+ 131,
419
+ 11,
420
+ 90,
421
+ 19,
422
+ 153,
423
+ 218,
424
+ 255,
425
+ 16,
426
+ 132,
427
+ 4,
428
+ 142,
429
+ 123,
430
+ 216,
431
+ 219,
432
+ 233,
433
+ 248,
434
+ 89
234
435
  ]
235
436
  }
236
437
  }
@@ -261,7 +462,16 @@
261
462
  },
262
463
  {
263
464
  "name": "unstake_zbcn",
264
- "discriminator": [90, 202, 101, 187, 218, 99, 244, 1],
465
+ "discriminator": [
466
+ 90,
467
+ 202,
468
+ 101,
469
+ 187,
470
+ 218,
471
+ 99,
472
+ 244,
473
+ 1
474
+ ],
265
475
  "accounts": [
266
476
  {
267
477
  "name": "staker",
@@ -275,7 +485,20 @@
275
485
  "seeds": [
276
486
  {
277
487
  "kind": "const",
278
- "value": [122, 101, 98, 101, 99, 95, 108, 111, 99, 107, 117, 112]
488
+ "value": [
489
+ 122,
490
+ 101,
491
+ 98,
492
+ 101,
493
+ 99,
494
+ 95,
495
+ 108,
496
+ 111,
497
+ 99,
498
+ 107,
499
+ 117,
500
+ 112
501
+ ]
279
502
  },
280
503
  {
281
504
  "kind": "account",
@@ -323,8 +546,38 @@
323
546
  {
324
547
  "kind": "const",
325
548
  "value": [
326
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
327
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
549
+ 6,
550
+ 221,
551
+ 246,
552
+ 225,
553
+ 215,
554
+ 101,
555
+ 161,
556
+ 147,
557
+ 217,
558
+ 203,
559
+ 225,
560
+ 70,
561
+ 206,
562
+ 235,
563
+ 121,
564
+ 172,
565
+ 28,
566
+ 180,
567
+ 133,
568
+ 237,
569
+ 95,
570
+ 91,
571
+ 55,
572
+ 145,
573
+ 58,
574
+ 140,
575
+ 245,
576
+ 133,
577
+ 126,
578
+ 255,
579
+ 0,
580
+ 169
328
581
  ]
329
582
  },
330
583
  {
@@ -335,8 +588,38 @@
335
588
  "program": {
336
589
  "kind": "const",
337
590
  "value": [
338
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
339
- 132, 4, 142, 123, 216, 219, 233, 248, 89
591
+ 140,
592
+ 151,
593
+ 37,
594
+ 143,
595
+ 78,
596
+ 36,
597
+ 137,
598
+ 241,
599
+ 187,
600
+ 61,
601
+ 16,
602
+ 41,
603
+ 20,
604
+ 142,
605
+ 13,
606
+ 131,
607
+ 11,
608
+ 90,
609
+ 19,
610
+ 153,
611
+ 218,
612
+ 255,
613
+ 16,
614
+ 132,
615
+ 4,
616
+ 142,
617
+ 123,
618
+ 216,
619
+ 219,
620
+ 233,
621
+ 248,
622
+ 89
340
623
  ]
341
624
  }
342
625
  }
@@ -353,8 +636,38 @@
353
636
  {
354
637
  "kind": "const",
355
638
  "value": [
356
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
357
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
639
+ 6,
640
+ 221,
641
+ 246,
642
+ 225,
643
+ 215,
644
+ 101,
645
+ 161,
646
+ 147,
647
+ 217,
648
+ 203,
649
+ 225,
650
+ 70,
651
+ 206,
652
+ 235,
653
+ 121,
654
+ 172,
655
+ 28,
656
+ 180,
657
+ 133,
658
+ 237,
659
+ 95,
660
+ 91,
661
+ 55,
662
+ 145,
663
+ 58,
664
+ 140,
665
+ 245,
666
+ 133,
667
+ 126,
668
+ 255,
669
+ 0,
670
+ 169
358
671
  ]
359
672
  },
360
673
  {
@@ -365,8 +678,38 @@
365
678
  "program": {
366
679
  "kind": "const",
367
680
  "value": [
368
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
369
- 132, 4, 142, 123, 216, 219, 233, 248, 89
681
+ 140,
682
+ 151,
683
+ 37,
684
+ 143,
685
+ 78,
686
+ 36,
687
+ 137,
688
+ 241,
689
+ 187,
690
+ 61,
691
+ 16,
692
+ 41,
693
+ 20,
694
+ 142,
695
+ 13,
696
+ 131,
697
+ 11,
698
+ 90,
699
+ 19,
700
+ 153,
701
+ 218,
702
+ 255,
703
+ 16,
704
+ 132,
705
+ 4,
706
+ 142,
707
+ 123,
708
+ 216,
709
+ 219,
710
+ 233,
711
+ 248,
712
+ 89
370
713
  ]
371
714
  }
372
715
  }
@@ -378,7 +721,19 @@
378
721
  "seeds": [
379
722
  {
380
723
  "kind": "const",
381
- "value": [115, 116, 97, 107, 101, 95, 118, 97, 117, 108, 116]
724
+ "value": [
725
+ 115,
726
+ 116,
727
+ 97,
728
+ 107,
729
+ 101,
730
+ 95,
731
+ 118,
732
+ 97,
733
+ 117,
734
+ 108,
735
+ 116
736
+ ]
382
737
  },
383
738
  {
384
739
  "kind": "account",
@@ -394,7 +749,20 @@
394
749
  "seeds": [
395
750
  {
396
751
  "kind": "const",
397
- "value": [114, 101, 119, 97, 114, 100, 95, 118, 97, 117, 108, 116]
752
+ "value": [
753
+ 114,
754
+ 101,
755
+ 119,
756
+ 97,
757
+ 114,
758
+ 100,
759
+ 95,
760
+ 118,
761
+ 97,
762
+ 117,
763
+ 108,
764
+ 116
765
+ ]
398
766
  },
399
767
  {
400
768
  "kind": "account",
@@ -415,8 +783,38 @@
415
783
  {
416
784
  "kind": "const",
417
785
  "value": [
418
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
419
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
786
+ 6,
787
+ 221,
788
+ 246,
789
+ 225,
790
+ 215,
791
+ 101,
792
+ 161,
793
+ 147,
794
+ 217,
795
+ 203,
796
+ 225,
797
+ 70,
798
+ 206,
799
+ 235,
800
+ 121,
801
+ 172,
802
+ 28,
803
+ 180,
804
+ 133,
805
+ 237,
806
+ 95,
807
+ 91,
808
+ 55,
809
+ 145,
810
+ 58,
811
+ 140,
812
+ 245,
813
+ 133,
814
+ 126,
815
+ 255,
816
+ 0,
817
+ 169
420
818
  ]
421
819
  },
422
820
  {
@@ -427,8 +825,38 @@
427
825
  "program": {
428
826
  "kind": "const",
429
827
  "value": [
430
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
431
- 132, 4, 142, 123, 216, 219, 233, 248, 89
828
+ 140,
829
+ 151,
830
+ 37,
831
+ 143,
832
+ 78,
833
+ 36,
834
+ 137,
835
+ 241,
836
+ 187,
837
+ 61,
838
+ 16,
839
+ 41,
840
+ 20,
841
+ 142,
842
+ 13,
843
+ 131,
844
+ 11,
845
+ 90,
846
+ 19,
847
+ 153,
848
+ 218,
849
+ 255,
850
+ 16,
851
+ 132,
852
+ 4,
853
+ 142,
854
+ 123,
855
+ 216,
856
+ 219,
857
+ 233,
858
+ 248,
859
+ 89
432
860
  ]
433
861
  }
434
862
  }
@@ -445,8 +873,38 @@
445
873
  {
446
874
  "kind": "const",
447
875
  "value": [
448
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
449
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
876
+ 6,
877
+ 221,
878
+ 246,
879
+ 225,
880
+ 215,
881
+ 101,
882
+ 161,
883
+ 147,
884
+ 217,
885
+ 203,
886
+ 225,
887
+ 70,
888
+ 206,
889
+ 235,
890
+ 121,
891
+ 172,
892
+ 28,
893
+ 180,
894
+ 133,
895
+ 237,
896
+ 95,
897
+ 91,
898
+ 55,
899
+ 145,
900
+ 58,
901
+ 140,
902
+ 245,
903
+ 133,
904
+ 126,
905
+ 255,
906
+ 0,
907
+ 169
450
908
  ]
451
909
  },
452
910
  {
@@ -457,8 +915,38 @@
457
915
  "program": {
458
916
  "kind": "const",
459
917
  "value": [
460
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
461
- 132, 4, 142, 123, 216, 219, 233, 248, 89
918
+ 140,
919
+ 151,
920
+ 37,
921
+ 143,
922
+ 78,
923
+ 36,
924
+ 137,
925
+ 241,
926
+ 187,
927
+ 61,
928
+ 16,
929
+ 41,
930
+ 20,
931
+ 142,
932
+ 13,
933
+ 131,
934
+ 11,
935
+ 90,
936
+ 19,
937
+ 153,
938
+ 218,
939
+ 255,
940
+ 16,
941
+ 132,
942
+ 4,
943
+ 142,
944
+ 123,
945
+ 216,
946
+ 219,
947
+ 233,
948
+ 248,
949
+ 89
462
950
  ]
463
951
  }
464
952
  }
@@ -479,8 +967,38 @@
479
967
  {
480
968
  "kind": "const",
481
969
  "value": [
482
- 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95,
483
- 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169
970
+ 6,
971
+ 221,
972
+ 246,
973
+ 225,
974
+ 215,
975
+ 101,
976
+ 161,
977
+ 147,
978
+ 217,
979
+ 203,
980
+ 225,
981
+ 70,
982
+ 206,
983
+ 235,
984
+ 121,
985
+ 172,
986
+ 28,
987
+ 180,
988
+ 133,
989
+ 237,
990
+ 95,
991
+ 91,
992
+ 55,
993
+ 145,
994
+ 58,
995
+ 140,
996
+ 245,
997
+ 133,
998
+ 126,
999
+ 255,
1000
+ 0,
1001
+ 169
484
1002
  ]
485
1003
  },
486
1004
  {
@@ -491,8 +1009,38 @@
491
1009
  "program": {
492
1010
  "kind": "const",
493
1011
  "value": [
494
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
495
- 132, 4, 142, 123, 216, 219, 233, 248, 89
1012
+ 140,
1013
+ 151,
1014
+ 37,
1015
+ 143,
1016
+ 78,
1017
+ 36,
1018
+ 137,
1019
+ 241,
1020
+ 187,
1021
+ 61,
1022
+ 16,
1023
+ 41,
1024
+ 20,
1025
+ 142,
1026
+ 13,
1027
+ 131,
1028
+ 11,
1029
+ 90,
1030
+ 19,
1031
+ 153,
1032
+ 218,
1033
+ 255,
1034
+ 16,
1035
+ 132,
1036
+ 4,
1037
+ 142,
1038
+ 123,
1039
+ 216,
1040
+ 219,
1041
+ 233,
1042
+ 248,
1043
+ 89
496
1044
  ]
497
1045
  }
498
1046
  }
@@ -519,7 +1067,16 @@
519
1067
  },
520
1068
  {
521
1069
  "name": "whitelist_staker",
522
- "discriminator": [13, 211, 22, 179, 35, 177, 63, 155],
1070
+ "discriminator": [
1071
+ 13,
1072
+ 211,
1073
+ 22,
1074
+ 179,
1075
+ 35,
1076
+ 177,
1077
+ 63,
1078
+ 155
1079
+ ],
523
1080
  "accounts": [
524
1081
  {
525
1082
  "name": "admin",
@@ -527,7 +1084,34 @@
527
1084
  "signer": true
528
1085
  },
529
1086
  {
530
- "name": "lockup"
1087
+ "name": "lockup",
1088
+ "writable": true,
1089
+ "pda": {
1090
+ "seeds": [
1091
+ {
1092
+ "kind": "const",
1093
+ "value": [
1094
+ 122,
1095
+ 101,
1096
+ 98,
1097
+ 101,
1098
+ 99,
1099
+ 95,
1100
+ 108,
1101
+ 111,
1102
+ 99,
1103
+ 107,
1104
+ 117,
1105
+ 112
1106
+ ]
1107
+ },
1108
+ {
1109
+ "kind": "account",
1110
+ "path": "lockup.stake_info.name",
1111
+ "account": "Lockup"
1112
+ }
1113
+ ]
1114
+ }
531
1115
  },
532
1116
  {
533
1117
  "name": "user_nonce",
@@ -591,15 +1175,42 @@
591
1175
  "accounts": [
592
1176
  {
593
1177
  "name": "Lockup",
594
- "discriminator": [1, 45, 32, 32, 57, 81, 88, 67]
1178
+ "discriminator": [
1179
+ 1,
1180
+ 45,
1181
+ 32,
1182
+ 32,
1183
+ 57,
1184
+ 81,
1185
+ 88,
1186
+ 67
1187
+ ]
595
1188
  },
596
1189
  {
597
1190
  "name": "UserNonce",
598
- "discriminator": [235, 133, 1, 243, 18, 135, 88, 224]
1191
+ "discriminator": [
1192
+ 235,
1193
+ 133,
1194
+ 1,
1195
+ 243,
1196
+ 18,
1197
+ 135,
1198
+ 88,
1199
+ 224
1200
+ ]
599
1201
  },
600
1202
  {
601
1203
  "name": "UserStakeData",
602
- "discriminator": [105, 207, 3, 141, 114, 114, 232, 147]
1204
+ "discriminator": [
1205
+ 105,
1206
+ 207,
1207
+ 3,
1208
+ 141,
1209
+ 114,
1210
+ 114,
1211
+ 232,
1212
+ 147
1213
+ ]
603
1214
  }
604
1215
  ],
605
1216
  "errors": [
@@ -662,6 +1273,21 @@
662
1273
  "code": 6011,
663
1274
  "name": "RewardIsZero",
664
1275
  "msg": "Reward Is Zero"
1276
+ },
1277
+ {
1278
+ "code": 6012,
1279
+ "name": "StakeAlreadyClaimed",
1280
+ "msg": "Stake Already Claimed"
1281
+ },
1282
+ {
1283
+ "code": 6013,
1284
+ "name": "StakeNotClaimable",
1285
+ "msg": "Stake Not Claimable"
1286
+ },
1287
+ {
1288
+ "code": 6014,
1289
+ "name": "MinimumStakeNotMet",
1290
+ "msg": "minimum Stake Not Met"
665
1291
  }
666
1292
  ],
667
1293
  "types": [
@@ -714,6 +1340,10 @@
714
1340
  "name": "fee_vault",
715
1341
  "type": "pubkey"
716
1342
  },
1343
+ {
1344
+ "name": "minimum_stake",
1345
+ "type": "u64"
1346
+ },
717
1347
  {
718
1348
  "name": "duration_map",
719
1349
  "type": {
@@ -792,6 +1422,10 @@
792
1422
  "name": "creator",
793
1423
  "type": "pubkey"
794
1424
  },
1425
+ {
1426
+ "name": "minimum_stake",
1427
+ "type": "u64"
1428
+ },
795
1429
  {
796
1430
  "name": "duration_map",
797
1431
  "type": {
@@ -881,6 +1515,14 @@
881
1515
  {
882
1516
  "name": "lock_period",
883
1517
  "type": "i64"
1518
+ },
1519
+ {
1520
+ "name": "staker",
1521
+ "type": "pubkey"
1522
+ },
1523
+ {
1524
+ "name": "lockup",
1525
+ "type": "pubkey"
884
1526
  }
885
1527
  ]
886
1528
  }
package/dist/constants.js CHANGED
@@ -16,9 +16,9 @@ exports.isSdkEnvDev = SDK_ENV === "development";
16
16
  */
17
17
  exports.ZEBEC_STAKE_PROGRAM = {
18
18
  /** Mainnet Program Id */
19
- mainnet: "6S5tbu8jPJKFvpBMjaMPQbcwcrw8iHcuGnXH8ZwHgwaE",
19
+ mainnet: "zSTKzGLiN6T6EVzhBiL6sjULXMahDavAS2p4R62afGv",
20
20
  /** Devnet Program Id */
21
- devnet: "6S5tbu8jPJKFvpBMjaMPQbcwcrw8iHcuGnXH8ZwHgwaE",
21
+ devnet: "zSTKzGLiN6T6EVzhBiL6sjULXMahDavAS2p4R62afGv",
22
22
  };
23
23
  exports.ZBCN = new web3_js_1.PublicKey("ZBCNpuD7YMXzTHB2fhGkGi78MNsHGLRXUhRewNRm9RU");
24
24
  /** BigNumber Object for 10 */
package/dist/service.d.ts CHANGED
@@ -54,6 +54,7 @@ export declare class StakeService {
54
54
  fee: Numeric;
55
55
  feeVault: Address;
56
56
  rewardSchemes: RewardScheme[];
57
+ minimumStake: Numeric;
57
58
  }): Promise<TransactionPayload>;
58
59
  stake(params: {
59
60
  lockupName: string;
@@ -70,15 +71,26 @@ export declare class StakeService {
70
71
  getLockupInfo(lockupAddress: Address): Promise<LockupInfo | null>;
71
72
  getStakeInfo(stakeAddress: Address, lockupAddress: Address): Promise<StakeInfo | null>;
72
73
  getUserNonceInfo(userNonceAddress: Address): Promise<UserNonceInfo | null>;
73
- getAllStakeInfos(userAdress: Address, lockupAddress: Address): Promise<(StakeInfo & {
74
+ getAllStakesInfo(userAdress: Address, lockupAddress: Address): Promise<{
75
+ address: string;
76
+ nonce: bigint;
77
+ createdTime: number;
78
+ stakedAmount: string;
79
+ rewardAmount: string;
80
+ stakeClaimed: boolean;
81
+ lockPeriod: number;
82
+ staker: string;
83
+ lockup: string;
74
84
  hash: string;
75
- })[]>;
85
+ }[]>;
86
+ getTotalStakeCount(lockupAddress: Address): Promise<number>;
76
87
  }
77
88
  export type InitLockupInstructionData = {
78
89
  rewardSchemes: ParsedRewardScheme[];
79
90
  fee: BN;
80
91
  feeVault: PublicKey;
81
92
  name: string;
93
+ minimumStake: BN;
82
94
  };
83
95
  export type ParsedRewardScheme = {
84
96
  duration: BN;
@@ -95,6 +107,7 @@ export type StakeInstructionData = {
95
107
  nonce: BN;
96
108
  };
97
109
  export type LockupInfo = {
110
+ address: string;
98
111
  feeInfo: {
99
112
  fee: string;
100
113
  feeVault: string;
@@ -110,17 +123,22 @@ export type LockupInfo = {
110
123
  name: string;
111
124
  creator: string;
112
125
  rewardSchemes: RewardScheme[];
126
+ minimumStake: string;
113
127
  };
114
128
  };
115
129
  export type StakeInfo = {
130
+ address: string;
116
131
  nonce: bigint;
117
132
  createdTime: number;
118
133
  stakedAmount: string;
119
134
  rewardAmount: string;
120
135
  stakeClaimed: boolean;
121
136
  lockPeriod: number;
137
+ staker: string;
138
+ lockup: string;
122
139
  };
123
140
  export type UserNonceInfo = {
141
+ address: string;
124
142
  nonce: bigint;
125
143
  };
126
144
  export type StakeInfoWithHash = StakeInfo & {
package/dist/service.js CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.StakeService = exports.StakeServiceBuilder = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
4
8
  const bignumber_js_1 = require("bignumber.js");
5
9
  const anchor_1 = require("@coral-xyz/anchor");
6
10
  const web3_js_1 = require("@solana/web3.js");
@@ -10,6 +14,7 @@ const artifacts_1 = require("./artifacts");
10
14
  const constants_1 = require("./constants");
11
15
  const pda_1 = require("./pda");
12
16
  const providers_1 = require("./providers");
17
+ const utils_1 = require("./utils");
13
18
  /**
14
19
  * StakeServiceBuilder is a builder class for creating a StakeService instance.
15
20
  * It allows you to set the network, provider, and program to use.
@@ -129,6 +134,7 @@ class StakeService {
129
134
  durationMap: data.rewardSchemes,
130
135
  feeVault: data.feeVault,
131
136
  name: data.name,
137
+ minimumStake: data.minimumStake,
132
138
  })
133
139
  .accountsPartial({
134
140
  creator,
@@ -171,6 +177,7 @@ class StakeService {
171
177
  const rewardToken = (0, anchor_1.translateAddress)(params.rewardToken);
172
178
  const feeVault = (0, anchor_1.translateAddress)(params.feeVault);
173
179
  const stakeTokenDecimals = await (0, solana_common_1.getMintDecimals)(this.provider.connection, stakeToken);
180
+ const UNITS_PER_STAKE_TOKEN = constants_1.TEN_BIGNUM.pow(stakeTokenDecimals);
174
181
  const rewardSchemes = params.rewardSchemes.map((value) => {
175
182
  return {
176
183
  duration: new anchor_1.BN(value.duration),
@@ -180,12 +187,14 @@ class StakeService {
180
187
  const lockup = (0, pda_1.deriveLockupAddress)(params.name, this.program.programId);
181
188
  const rewardVault = (0, pda_1.deriveRewardVaultAddress)(lockup, this.program.programId);
182
189
  const stakeVault = (0, pda_1.deriveStakeVaultAddress)(lockup, this.program.programId);
183
- const fee = new anchor_1.BN((0, bignumber_js_1.BigNumber)(params.fee).times(constants_1.TEN_BIGNUM.pow(stakeTokenDecimals)).toFixed());
190
+ const fee = new anchor_1.BN((0, bignumber_js_1.BigNumber)(params.fee).times(UNITS_PER_STAKE_TOKEN).toFixed(0));
191
+ const minimumStake = new anchor_1.BN((0, bignumber_js_1.BigNumber)(params.minimumStake).times(UNITS_PER_STAKE_TOKEN).toFixed(0));
184
192
  const instruction = await this.getInitLockupInstruction(creator, lockup, stakeToken, rewardToken, rewardVault, stakeVault, {
185
193
  fee,
186
194
  feeVault: feeVault,
187
195
  name: params.name,
188
196
  rewardSchemes,
197
+ minimumStake,
189
198
  });
190
199
  return this._createPayload(creator, [instruction]);
191
200
  }
@@ -251,6 +260,7 @@ class StakeService {
251
260
  const stakeTokenDecimals = await (0, solana_common_1.getMintDecimals)(this.provider.connection, stakeTokenAddress);
252
261
  const UNITS_PER_STAKE_TOKEN = constants_1.TEN_BIGNUM.pow(stakeTokenDecimals);
253
262
  return {
263
+ address: lockupAddress.toString(),
254
264
  feeInfo: {
255
265
  fee: (0, bignumber_js_1.BigNumber)(lockupAccount.feeInfo.fee.toString()).div(UNITS_PER_STAKE_TOKEN).toFixed(),
256
266
  feeVault: lockupAccount.feeInfo.feeVault.toString(),
@@ -269,6 +279,7 @@ class StakeService {
269
279
  duration: value.duration.toNumber(),
270
280
  rewardRate: (0, core_utils_1.bpsToPercent)(value.reward.toString()),
271
281
  })),
282
+ minimumStake: (0, bignumber_js_1.BigNumber)(lockupAccount.stakeInfo.minimumStake.toString()).div(UNITS_PER_STAKE_TOKEN).toFixed(),
272
283
  },
273
284
  };
274
285
  }
@@ -288,12 +299,15 @@ class StakeService {
288
299
  return null;
289
300
  }
290
301
  return {
302
+ address: stakeAddress.toString(),
291
303
  nonce: BigInt(stakeAccount.nonce.toString()),
292
304
  createdTime: stakeAccount.createdTime.toNumber(),
293
305
  stakedAmount: (0, bignumber_js_1.BigNumber)(stakeAccount.stakedAmount.toString()).div(UNITS_PER_STAKE_TOKEN).toFixed(),
294
306
  rewardAmount: (0, bignumber_js_1.BigNumber)(stakeAccount.rewardAmount.toString()).div(UNITS_PER_REWARD_TOKEN).toFixed(),
295
307
  stakeClaimed: stakeAccount.stakeClaimed,
296
308
  lockPeriod: stakeAccount.lockPeriod.toNumber(),
309
+ lockup: stakeAccount.lockup.toString(),
310
+ staker: stakeAccount.staker.toString(),
297
311
  };
298
312
  }
299
313
  async getUserNonceInfo(userNonceAddress) {
@@ -302,10 +316,11 @@ class StakeService {
302
316
  return null;
303
317
  }
304
318
  return {
319
+ address: userNonceAddress.toString(),
305
320
  nonce: BigInt(userNonceAccount.nonce.toString()),
306
321
  };
307
322
  }
308
- async getAllStakeInfos(userAdress, lockupAddress) {
323
+ async getAllStakesInfo(userAdress, lockupAddress) {
309
324
  const lockupAccount = await this.program.account.lockup.fetchNullable(lockupAddress, this.provider.connection.commitment);
310
325
  if (!lockupAccount) {
311
326
  throw new Error("Lockup account does not exists for address: " + lockupAddress);
@@ -323,26 +338,63 @@ class StakeService {
323
338
  }
324
339
  const currentNonce = userNonceAccount.nonce.toNumber();
325
340
  const nonces = Array.from({ length: currentNonce }, (_, i) => BigInt(i));
326
- const promises = nonces.map(async (nonce) => {
327
- const stakeAddress = (0, pda_1.deriveStakeAddress)(userAdress, lockupAddress, nonce, this.program.programId);
328
- const stakeAccount = await this.program.account.userStakeData.fetch(stakeAddress, this.provider.connection.commitment);
329
- const signatures = await this.provider.connection.getSignaturesForAddress(stakeAddress, {}, "finalized");
330
- const stakeSignatures = signatures.filter((s) => {
331
- return !s.err && (s.blockTime ?? 0) === stakeAccount.createdTime.toNumber();
332
- });
333
- const signatureInfo = stakeSignatures[stakeSignatures.length - 1];
341
+ const stakeAddresses = nonces.map((nonce) => (0, pda_1.deriveStakeAddress)(userAdress, lockupAddress, nonce, this.program.programId));
342
+ const accountInfos = await this.provider.connection.getMultipleAccountsInfo(stakeAddresses, {
343
+ commitment: "finalized",
344
+ });
345
+ const stakeAccountsInfo = accountInfos.map((value, i) => {
346
+ (0, assert_1.default)(value, "Account does not exists for stake address: " + stakeAddresses[i] + " at nonce: " + nonces[i]);
347
+ const stakeAccount = this.program.coder.accounts.decode(this.program.idl.accounts[2].name, value.data);
334
348
  const info = {
335
- hash: signatureInfo ? signatureInfo.signature : "",
349
+ address: stakeAddresses[i].toString(),
336
350
  nonce: BigInt(stakeAccount.nonce.toString()),
337
351
  createdTime: stakeAccount.createdTime.toNumber(),
338
352
  stakedAmount: (0, bignumber_js_1.BigNumber)(stakeAccount.stakedAmount.toString()).div(UNITS_PER_STAKE_TOKEN).toFixed(),
339
353
  rewardAmount: (0, bignumber_js_1.BigNumber)(stakeAccount.rewardAmount.toString()).div(UNITS_PER_REWARD_TOKEN).toFixed(),
340
354
  stakeClaimed: stakeAccount.stakeClaimed,
341
355
  lockPeriod: stakeAccount.lockPeriod.toNumber(),
356
+ lockup: stakeAccount.lockup.toString(),
357
+ staker: stakeAccount.staker.toString(),
358
+ };
359
+ return info;
360
+ });
361
+ // Your mapping with exponential backoff applied to the API call.
362
+ const promises = stakeAccountsInfo.map(async (stakeInfo) => {
363
+ // Wrap the asynchronous call with our exponential backoff helper.
364
+ const signatures = await (0, utils_1.callWithExponentialBackoff)(async () => this.provider.connection.getSignaturesForAddress((0, anchor_1.translateAddress)(stakeInfo.address), {}, "finalized"));
365
+ const stakeSignatures = signatures.filter((s) => {
366
+ return !s.err && (s.blockTime ?? 0) === stakeInfo.createdTime;
367
+ });
368
+ const signatureInfo = stakeSignatures[stakeSignatures.length - 1];
369
+ const info = {
370
+ hash: signatureInfo ? signatureInfo.signature : "",
371
+ ...stakeInfo,
342
372
  };
343
373
  return info;
344
374
  });
345
375
  return Promise.all(promises);
346
376
  }
377
+ async getTotalStakeCount(lockupAddress) {
378
+ const dataSize = this.program.account.userStakeData.size;
379
+ const accountInfos = await this.provider.connection.getProgramAccounts(this.program.programId, {
380
+ commitment: "finalized",
381
+ dataSlice: {
382
+ length: 0,
383
+ offset: 0,
384
+ },
385
+ filters: [
386
+ {
387
+ dataSize,
388
+ },
389
+ {
390
+ memcmp: {
391
+ bytes: lockupAddress.toString(),
392
+ offset: 81,
393
+ },
394
+ },
395
+ ],
396
+ });
397
+ return accountInfos.length;
398
+ }
347
399
  }
348
400
  exports.StakeService = StakeService;
@@ -0,0 +1 @@
1
+ export declare function callWithExponentialBackoff<T>(fn: () => T, attemptsLeft?: number, delay?: number): Promise<T>;
package/dist/utils.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callWithExponentialBackoff = callWithExponentialBackoff;
4
+ // Set your backoff parameters
5
+ const MAX_ATTEMPTS = 5;
6
+ const INITIAL_DELAY = 100; // in milliseconds
7
+ const BACKOFF_FACTOR = 2;
8
+ // Helper function that wraps an async operation with exponential backoff.
9
+ async function callWithExponentialBackoff(fn, attemptsLeft = MAX_ATTEMPTS, delay = INITIAL_DELAY) {
10
+ try {
11
+ return await fn();
12
+ }
13
+ catch (error) {
14
+ if (attemptsLeft === 1) {
15
+ // If no attempts remain, rethrow the error.
16
+ throw error;
17
+ }
18
+ console.warn(`Error encountered: ${error instanceof Error ? error.message : "Unknown error"}. Retrying in ${delay} ms... (${attemptsLeft - 1} attempts left)`);
19
+ // Wait for the delay period.
20
+ await new Promise((resolve) => setTimeout(resolve, delay));
21
+ // Try again with one fewer attempt and an exponentially increased delay.
22
+ return callWithExponentialBackoff(fn, attemptsLeft - 1, delay * BACKOFF_FACTOR);
23
+ }
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zebec-network/zebec-stake-sdk",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "An SDK for zebec network stake solana program",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "clean": "rimraf ./dist",
22
22
  "format": "prettier --write .",
23
23
  "start": "ts-node src/index.ts",
24
- "test": "ts-mocha -p ./tsconfig.json -t 1000000"
24
+ "test": "ts-mocha -p ./tsconfig.json -t 1000000000"
25
25
  },
26
26
  "dependencies": {
27
27
  "@coral-xyz/anchor": "^0.31.1",