@triadxyz/triad-protocol 0.0.1-beta → 0.0.3-beta
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/dist/stake.d.ts +50 -108
- package/dist/stake.js +186 -92
- package/dist/test.js +80 -38
- package/dist/types/idl_triad_protocol.json +275 -32
- package/dist/types/index.d.ts +0 -62
- package/dist/types/index.js +0 -18
- package/dist/types/stake.d.ts +114 -0
- package/dist/types/stake.js +20 -0
- package/dist/types/triad_protocol.d.ts +275 -32
- package/dist/utils/constants.d.ts +2 -1
- package/dist/utils/constants.js +3 -2
- package/dist/utils/helpers.d.ts +15 -0
- package/dist/utils/helpers.js +59 -1
- package/dist/utils/stake-season-1/rarity.json +11036 -0
- package/dist/utils/stake-season-1/users-collections-week-1.json +4386 -0
- package/package.json +1 -1
- package/dist/utils/stakes.json +0 -47251
|
@@ -12,6 +12,63 @@ export type TriadProtocol = {
|
|
|
12
12
|
spec: '0.1.0';
|
|
13
13
|
};
|
|
14
14
|
instructions: [
|
|
15
|
+
{
|
|
16
|
+
name: 'claimStakeRewards';
|
|
17
|
+
discriminator: [107, 91, 233, 196, 211, 47, 218, 21];
|
|
18
|
+
accounts: [
|
|
19
|
+
{
|
|
20
|
+
name: 'signer';
|
|
21
|
+
writable: true;
|
|
22
|
+
signer: true;
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'stakeVault';
|
|
26
|
+
writable: true;
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'stake';
|
|
30
|
+
writable: true;
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'nftRewards';
|
|
34
|
+
writable: true;
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'mint';
|
|
38
|
+
writable: true;
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'fromAta';
|
|
42
|
+
writable: true;
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'toAta';
|
|
46
|
+
writable: true;
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'tokenProgram';
|
|
50
|
+
address: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'associatedTokenProgram';
|
|
54
|
+
address: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'systemProgram';
|
|
58
|
+
address: '11111111111111111111111111111111';
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
args: [
|
|
62
|
+
{
|
|
63
|
+
name: 'args';
|
|
64
|
+
type: {
|
|
65
|
+
defined: {
|
|
66
|
+
name: 'claimStakeRewardsArgs';
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
},
|
|
15
72
|
{
|
|
16
73
|
name: 'closePosition';
|
|
17
74
|
discriminator: [123, 134, 81, 0, 49, 68, 98, 98];
|
|
@@ -321,6 +378,31 @@ export type TriadProtocol = {
|
|
|
321
378
|
}
|
|
322
379
|
];
|
|
323
380
|
},
|
|
381
|
+
{
|
|
382
|
+
name: 'jupiterSwap';
|
|
383
|
+
discriminator: [116, 207, 0, 196, 252, 120, 243, 18];
|
|
384
|
+
accounts: [
|
|
385
|
+
{
|
|
386
|
+
name: 'userAccount';
|
|
387
|
+
writable: true;
|
|
388
|
+
signer: true;
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
name: 'jupiterProgram';
|
|
392
|
+
address: 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4';
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
name: 'systemProgram';
|
|
396
|
+
address: '11111111111111111111111111111111';
|
|
397
|
+
}
|
|
398
|
+
];
|
|
399
|
+
args: [
|
|
400
|
+
{
|
|
401
|
+
name: 'data';
|
|
402
|
+
type: 'bytes';
|
|
403
|
+
}
|
|
404
|
+
];
|
|
405
|
+
},
|
|
324
406
|
{
|
|
325
407
|
name: 'openPosition';
|
|
326
408
|
discriminator: [135, 128, 47, 77, 15, 152, 240, 49];
|
|
@@ -548,6 +630,80 @@ export type TriadProtocol = {
|
|
|
548
630
|
}
|
|
549
631
|
];
|
|
550
632
|
},
|
|
633
|
+
{
|
|
634
|
+
name: 'updateStakeRewards';
|
|
635
|
+
discriminator: [39, 82, 38, 43, 234, 67, 69, 94];
|
|
636
|
+
accounts: [
|
|
637
|
+
{
|
|
638
|
+
name: 'signer';
|
|
639
|
+
writable: true;
|
|
640
|
+
signer: true;
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
name: 'stake';
|
|
644
|
+
writable: true;
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
name: 'nftRewards';
|
|
648
|
+
writable: true;
|
|
649
|
+
pda: {
|
|
650
|
+
seeds: [
|
|
651
|
+
{
|
|
652
|
+
kind: 'const';
|
|
653
|
+
value: [110, 102, 116, 95, 114, 101, 119, 97, 114, 100, 115];
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
kind: 'account';
|
|
657
|
+
path: 'stake';
|
|
658
|
+
}
|
|
659
|
+
];
|
|
660
|
+
};
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
name: 'systemProgram';
|
|
664
|
+
address: '11111111111111111111111111111111';
|
|
665
|
+
}
|
|
666
|
+
];
|
|
667
|
+
args: [
|
|
668
|
+
{
|
|
669
|
+
name: 'args';
|
|
670
|
+
type: {
|
|
671
|
+
defined: {
|
|
672
|
+
name: 'updateStakeRewardsArgs';
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
];
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
name: 'updateStakeVaultStatus';
|
|
680
|
+
discriminator: [71, 64, 188, 150, 86, 254, 221, 65];
|
|
681
|
+
accounts: [
|
|
682
|
+
{
|
|
683
|
+
name: 'signer';
|
|
684
|
+
writable: true;
|
|
685
|
+
signer: true;
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
name: 'stakeVault';
|
|
689
|
+
writable: true;
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
name: 'systemProgram';
|
|
693
|
+
address: '11111111111111111111111111111111';
|
|
694
|
+
}
|
|
695
|
+
];
|
|
696
|
+
args: [
|
|
697
|
+
{
|
|
698
|
+
name: 'args';
|
|
699
|
+
type: {
|
|
700
|
+
defined: {
|
|
701
|
+
name: 'updateStakeVaultStatusArgs';
|
|
702
|
+
};
|
|
703
|
+
};
|
|
704
|
+
}
|
|
705
|
+
];
|
|
706
|
+
},
|
|
551
707
|
{
|
|
552
708
|
name: 'updateTickerPrice';
|
|
553
709
|
discriminator: [203, 166, 139, 83, 76, 144, 250, 29];
|
|
@@ -618,6 +774,14 @@ export type TriadProtocol = {
|
|
|
618
774
|
];
|
|
619
775
|
};
|
|
620
776
|
},
|
|
777
|
+
{
|
|
778
|
+
name: 'admin';
|
|
779
|
+
writable: true;
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
name: 'nftRewards';
|
|
783
|
+
writable: true;
|
|
784
|
+
},
|
|
621
785
|
{
|
|
622
786
|
name: 'mint';
|
|
623
787
|
writable: true;
|
|
@@ -656,6 +820,10 @@ export type TriadProtocol = {
|
|
|
656
820
|
}
|
|
657
821
|
];
|
|
658
822
|
accounts: [
|
|
823
|
+
{
|
|
824
|
+
name: 'nftRewards';
|
|
825
|
+
discriminator: [210, 99, 18, 65, 58, 128, 167, 91];
|
|
826
|
+
},
|
|
659
827
|
{
|
|
660
828
|
name: 'stake';
|
|
661
829
|
discriminator: [150, 197, 176, 29, 55, 132, 112, 149];
|
|
@@ -694,106 +862,113 @@ export type TriadProtocol = {
|
|
|
694
862
|
errors: [
|
|
695
863
|
{
|
|
696
864
|
code: 6000;
|
|
697
|
-
name: 'unauthorizedToDeleteProject';
|
|
698
|
-
msg: 'Unauthorized to delete the project';
|
|
699
|
-
},
|
|
700
|
-
{
|
|
701
|
-
code: 6001;
|
|
702
|
-
name: 'invalidShadowAccount';
|
|
703
|
-
msg: 'Invalid shadow account';
|
|
704
|
-
},
|
|
705
|
-
{
|
|
706
|
-
code: 6002;
|
|
707
865
|
name: 'invalidAccount';
|
|
708
866
|
msg: 'Invalid account';
|
|
709
867
|
},
|
|
710
868
|
{
|
|
711
|
-
code:
|
|
869
|
+
code: 6001;
|
|
712
870
|
name: 'unauthorized';
|
|
713
871
|
msg: 'Unauthorized access';
|
|
714
872
|
},
|
|
715
873
|
{
|
|
716
|
-
code:
|
|
717
|
-
name: 'alphaVantageApiError';
|
|
718
|
-
msg: 'Failed to get data from Vybe Network';
|
|
719
|
-
},
|
|
720
|
-
{
|
|
721
|
-
code: 6005;
|
|
874
|
+
code: 6002;
|
|
722
875
|
name: 'depositFailed';
|
|
723
876
|
msg: 'Failed to deposit';
|
|
724
877
|
},
|
|
725
878
|
{
|
|
726
|
-
code:
|
|
879
|
+
code: 6003;
|
|
727
880
|
name: 'invalidOwnerAuthority';
|
|
728
881
|
msg: 'Invalid Owner authority';
|
|
729
882
|
},
|
|
730
883
|
{
|
|
731
|
-
code:
|
|
884
|
+
code: 6004;
|
|
732
885
|
name: 'invalidPosition';
|
|
733
886
|
msg: 'Invalid Position';
|
|
734
887
|
},
|
|
735
888
|
{
|
|
736
|
-
code:
|
|
889
|
+
code: 6005;
|
|
737
890
|
name: 'invalidTickerPosition';
|
|
738
891
|
msg: 'Invalid Ticker position';
|
|
739
892
|
},
|
|
740
893
|
{
|
|
741
|
-
code:
|
|
894
|
+
code: 6006;
|
|
742
895
|
name: 'noFreePositionSlot';
|
|
743
896
|
msg: 'No free position slot';
|
|
744
897
|
},
|
|
745
898
|
{
|
|
746
|
-
code:
|
|
899
|
+
code: 6007;
|
|
747
900
|
name: 'invalidMintAddress';
|
|
748
901
|
msg: 'Invalid Mint address';
|
|
749
902
|
},
|
|
750
903
|
{
|
|
751
|
-
code:
|
|
904
|
+
code: 6008;
|
|
752
905
|
name: 'invalidProfitShare';
|
|
753
906
|
msg: 'Invalid Profit Share';
|
|
754
907
|
},
|
|
755
908
|
{
|
|
756
|
-
code:
|
|
909
|
+
code: 6009;
|
|
757
910
|
name: 'invalidDepositAmount';
|
|
758
911
|
msg: 'Invalid Deposit Amount';
|
|
759
912
|
},
|
|
760
913
|
{
|
|
761
|
-
code:
|
|
914
|
+
code: 6010;
|
|
762
915
|
name: 'invalidWithdrawAmount';
|
|
763
916
|
msg: 'Invalid Withdraw Amount';
|
|
764
917
|
},
|
|
765
918
|
{
|
|
766
|
-
code:
|
|
919
|
+
code: 6011;
|
|
767
920
|
name: 'invalidStakeVault';
|
|
768
921
|
msg: 'Invalid Stake Vault';
|
|
769
922
|
},
|
|
770
923
|
{
|
|
771
|
-
code:
|
|
924
|
+
code: 6012;
|
|
772
925
|
name: 'invalidStakeVaultAuthority';
|
|
773
926
|
msg: 'Invalid Stake Vault Authority';
|
|
774
927
|
},
|
|
775
928
|
{
|
|
776
|
-
code:
|
|
929
|
+
code: 6013;
|
|
777
930
|
name: 'invalidStakeVaultAmount';
|
|
778
931
|
msg: 'Invalid Stake Vault Amount';
|
|
779
932
|
},
|
|
780
933
|
{
|
|
781
|
-
code:
|
|
934
|
+
code: 6014;
|
|
782
935
|
name: 'stakeVaultLocked';
|
|
783
936
|
msg: 'Stake Vault Available';
|
|
784
937
|
},
|
|
785
938
|
{
|
|
786
|
-
code:
|
|
939
|
+
code: 6015;
|
|
787
940
|
name: 'stakeLocked';
|
|
788
941
|
msg: 'Stake is locked';
|
|
789
942
|
},
|
|
790
943
|
{
|
|
791
|
-
code:
|
|
944
|
+
code: 6016;
|
|
792
945
|
name: 'stakeVaultFull';
|
|
793
946
|
msg: 'Stake Vault Full';
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
code: 6017;
|
|
950
|
+
name: 'invalidMint';
|
|
951
|
+
msg: 'Invalid Mint';
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
code: 6018;
|
|
955
|
+
name: 'invalidStakeVaultWeek';
|
|
956
|
+
msg: 'Invalid Stake Vault Week';
|
|
794
957
|
}
|
|
795
958
|
];
|
|
796
959
|
types: [
|
|
960
|
+
{
|
|
961
|
+
name: 'claimStakeRewardsArgs';
|
|
962
|
+
type: {
|
|
963
|
+
kind: 'struct';
|
|
964
|
+
fields: [
|
|
965
|
+
{
|
|
966
|
+
name: 'week';
|
|
967
|
+
type: 'u8';
|
|
968
|
+
}
|
|
969
|
+
];
|
|
970
|
+
};
|
|
971
|
+
},
|
|
797
972
|
{
|
|
798
973
|
name: 'closePositionArgs';
|
|
799
974
|
type: {
|
|
@@ -918,6 +1093,34 @@ export type TriadProtocol = {
|
|
|
918
1093
|
];
|
|
919
1094
|
};
|
|
920
1095
|
},
|
|
1096
|
+
{
|
|
1097
|
+
name: 'nftRewards';
|
|
1098
|
+
type: {
|
|
1099
|
+
kind: 'struct';
|
|
1100
|
+
fields: [
|
|
1101
|
+
{
|
|
1102
|
+
name: 'stake';
|
|
1103
|
+
type: 'pubkey';
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
name: 'dailyRewards';
|
|
1107
|
+
type: {
|
|
1108
|
+
array: ['u64', 30];
|
|
1109
|
+
};
|
|
1110
|
+
},
|
|
1111
|
+
{
|
|
1112
|
+
name: 'weeklyRewardsPaid';
|
|
1113
|
+
type: {
|
|
1114
|
+
array: ['bool', 5];
|
|
1115
|
+
};
|
|
1116
|
+
},
|
|
1117
|
+
{
|
|
1118
|
+
name: 'apr';
|
|
1119
|
+
type: 'f32';
|
|
1120
|
+
}
|
|
1121
|
+
];
|
|
1122
|
+
};
|
|
1123
|
+
},
|
|
921
1124
|
{
|
|
922
1125
|
name: 'openPositionArgs';
|
|
923
1126
|
type: {
|
|
@@ -1193,10 +1396,14 @@ export type TriadProtocol = {
|
|
|
1193
1396
|
name: 'usersPaid';
|
|
1194
1397
|
type: 'pubkey';
|
|
1195
1398
|
},
|
|
1399
|
+
{
|
|
1400
|
+
name: 'week';
|
|
1401
|
+
type: 'u8';
|
|
1402
|
+
},
|
|
1196
1403
|
{
|
|
1197
1404
|
name: 'padding';
|
|
1198
1405
|
type: {
|
|
1199
|
-
array: ['u8',
|
|
1406
|
+
array: ['u8', 56];
|
|
1200
1407
|
};
|
|
1201
1408
|
}
|
|
1202
1409
|
];
|
|
@@ -1272,6 +1479,42 @@ export type TriadProtocol = {
|
|
|
1272
1479
|
];
|
|
1273
1480
|
};
|
|
1274
1481
|
},
|
|
1482
|
+
{
|
|
1483
|
+
name: 'updateStakeRewardsArgs';
|
|
1484
|
+
type: {
|
|
1485
|
+
kind: 'struct';
|
|
1486
|
+
fields: [
|
|
1487
|
+
{
|
|
1488
|
+
name: 'day';
|
|
1489
|
+
type: 'u8';
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
name: 'rewards';
|
|
1493
|
+
type: 'u64';
|
|
1494
|
+
},
|
|
1495
|
+
{
|
|
1496
|
+
name: 'apr';
|
|
1497
|
+
type: 'f32';
|
|
1498
|
+
}
|
|
1499
|
+
];
|
|
1500
|
+
};
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
name: 'updateStakeVaultStatusArgs';
|
|
1504
|
+
type: {
|
|
1505
|
+
kind: 'struct';
|
|
1506
|
+
fields: [
|
|
1507
|
+
{
|
|
1508
|
+
name: 'isLocked';
|
|
1509
|
+
type: 'bool';
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
name: 'week';
|
|
1513
|
+
type: 'u8';
|
|
1514
|
+
}
|
|
1515
|
+
];
|
|
1516
|
+
};
|
|
1517
|
+
},
|
|
1275
1518
|
{
|
|
1276
1519
|
name: 'updateTickerPriceArgs';
|
|
1277
1520
|
type: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const TRIAD_PROTOCOL_PROGRAM_ID = "TRDwq3BN4mP3m9KsuNUWSN6QDff93VKGSwE95Jbr9Ss";
|
|
2
2
|
export declare const ATA_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const ADMIN = "";
|
|
4
|
+
export declare const STAKE_SEASON_1 = "Triad Share 1";
|
|
4
5
|
export declare const TTRIAD_DECIMALS = 6;
|
|
5
6
|
export declare const TTRIAD_FEE = 2;
|
|
6
7
|
export declare const RARITY_RANK_SEASON_1: {
|
package/dist/utils/constants.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RARITY_RANK_SEASON_1 = exports.TTRIAD_FEE = exports.TTRIAD_DECIMALS = exports.
|
|
3
|
+
exports.RARITY_RANK_SEASON_1 = exports.TTRIAD_FEE = exports.TTRIAD_DECIMALS = exports.STAKE_SEASON_1 = exports.ADMIN = exports.ATA_PROGRAM_ID = exports.TRIAD_PROTOCOL_PROGRAM_ID = void 0;
|
|
4
4
|
exports.TRIAD_PROTOCOL_PROGRAM_ID = 'TRDwq3BN4mP3m9KsuNUWSN6QDff93VKGSwE95Jbr9Ss';
|
|
5
5
|
exports.ATA_PROGRAM_ID = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
|
|
6
|
-
exports.
|
|
6
|
+
exports.ADMIN = '';
|
|
7
|
+
exports.STAKE_SEASON_1 = 'Triad Share 1';
|
|
7
8
|
exports.TTRIAD_DECIMALS = 6;
|
|
8
9
|
exports.TTRIAD_FEE = 2;
|
|
9
10
|
exports.RARITY_RANK_SEASON_1 = {
|
package/dist/utils/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { COLLECTION_MUlTIPLIER, StakeResponse, StakeVaultResponse } from './../types/stake';
|
|
1
2
|
import { PublicKey } from '@solana/web3.js';
|
|
2
3
|
import BN from 'bn.js';
|
|
3
4
|
export declare const getTickerAddressSync: (programId: PublicKey, tickerName: string) => PublicKey;
|
|
@@ -7,5 +8,19 @@ export declare const getVaultAddressSync: (programId: PublicKey, tickerAddress:
|
|
|
7
8
|
export declare const getTokenVaultAddressSync: (programId: PublicKey, vault: PublicKey) => PublicKey;
|
|
8
9
|
export declare function getUserPositionAddressSync(programId: PublicKey, authority: PublicKey, ticker: PublicKey): PublicKey;
|
|
9
10
|
export declare const getStakeVaultAddressSync: (programId: PublicKey, vaultName: string) => PublicKey;
|
|
11
|
+
export declare const getStakeAddressSync: (programId: PublicKey, nftName: string) => PublicKey;
|
|
12
|
+
export declare const getNFTRewardsAddressSync: (programId: PublicKey, stake: PublicKey) => PublicKey;
|
|
10
13
|
export declare const getATASync: (address: PublicKey, Mint: PublicKey) => PublicKey;
|
|
11
14
|
export declare const formatNumber: (number: bigint | BN, decimals?: number) => number;
|
|
15
|
+
export declare const formatStakeVault: (stakeVault: any) => StakeVaultResponse;
|
|
16
|
+
export declare const formatStake: (stake: any) => StakeResponse;
|
|
17
|
+
export declare const calculateTotalMultiplier: (collections: COLLECTION_MUlTIPLIER[], rank: {
|
|
18
|
+
max: number;
|
|
19
|
+
currentPosition: number;
|
|
20
|
+
}) => number;
|
|
21
|
+
export declare const calculateAPR: ({ rewards, rate, amount, baseRewards }: {
|
|
22
|
+
rewards: number;
|
|
23
|
+
rate: number;
|
|
24
|
+
amount: number;
|
|
25
|
+
baseRewards: number;
|
|
26
|
+
}) => number;
|
package/dist/utils/helpers.js
CHANGED
|
@@ -23,7 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.formatNumber = exports.getATASync = exports.getStakeVaultAddressSync = exports.getUserPositionAddressSync = exports.getTokenVaultAddressSync = exports.getVaultAddressSync = exports.decodeString = exports.encodeString = exports.getTickerAddressSync = void 0;
|
|
26
|
+
exports.calculateAPR = exports.calculateTotalMultiplier = exports.formatStake = exports.formatStakeVault = exports.formatNumber = exports.getATASync = exports.getNFTRewardsAddressSync = exports.getStakeAddressSync = exports.getStakeVaultAddressSync = exports.getUserPositionAddressSync = exports.getTokenVaultAddressSync = exports.getVaultAddressSync = exports.decodeString = exports.encodeString = exports.getTickerAddressSync = void 0;
|
|
27
|
+
const stake_1 = require("./../types/stake");
|
|
27
28
|
const web3_js_1 = require("@solana/web3.js");
|
|
28
29
|
const anchor = __importStar(require("@coral-xyz/anchor"));
|
|
29
30
|
const spl_token_1 = require("@solana/spl-token");
|
|
@@ -75,6 +76,16 @@ const getStakeVaultAddressSync = (programId, vaultName) => {
|
|
|
75
76
|
return StakeVaultPDA;
|
|
76
77
|
};
|
|
77
78
|
exports.getStakeVaultAddressSync = getStakeVaultAddressSync;
|
|
79
|
+
const getStakeAddressSync = (programId, nftName) => {
|
|
80
|
+
const [StakePDA] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('stake'), Buffer.from(nftName)], programId);
|
|
81
|
+
return StakePDA;
|
|
82
|
+
};
|
|
83
|
+
exports.getStakeAddressSync = getStakeAddressSync;
|
|
84
|
+
const getNFTRewardsAddressSync = (programId, stake) => {
|
|
85
|
+
const [NFTRewardsPDA] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('nft_rewards'), stake.toBuffer()], programId);
|
|
86
|
+
return NFTRewardsPDA;
|
|
87
|
+
};
|
|
88
|
+
exports.getNFTRewardsAddressSync = getNFTRewardsAddressSync;
|
|
78
89
|
const getATASync = (address, Mint) => {
|
|
79
90
|
const [ATA] = web3_js_1.PublicKey.findProgramAddressSync([address.toBytes(), spl_token_1.TOKEN_2022_PROGRAM_ID.toBytes(), Mint.toBytes()], new web3_js_1.PublicKey(constants_1.ATA_PROGRAM_ID));
|
|
80
91
|
return ATA;
|
|
@@ -84,3 +95,50 @@ const formatNumber = (number, decimals = 6) => {
|
|
|
84
95
|
return Number(number.toString()) / Math.pow(10, decimals);
|
|
85
96
|
};
|
|
86
97
|
exports.formatNumber = formatNumber;
|
|
98
|
+
const formatStakeVault = (stakeVault) => {
|
|
99
|
+
return {
|
|
100
|
+
name: stakeVault.name,
|
|
101
|
+
collection: stakeVault.collection,
|
|
102
|
+
slots: stakeVault.slots.toNumber(),
|
|
103
|
+
amount: stakeVault.amount.toNumber(),
|
|
104
|
+
isLocked: stakeVault.isLocked,
|
|
105
|
+
usersPaid: stakeVault.usersPaid.toBase58(),
|
|
106
|
+
amountPaid: stakeVault.amountPaid.toNumber(),
|
|
107
|
+
amountUsers: stakeVault.amountUsers.toNumber(),
|
|
108
|
+
week: stakeVault.week,
|
|
109
|
+
apr: stakeVault.apr,
|
|
110
|
+
initTs: stakeVault.initTs.toNumber(),
|
|
111
|
+
endTs: stakeVault.endTs.toNumber()
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
exports.formatStakeVault = formatStakeVault;
|
|
115
|
+
const formatStake = (stake) => {
|
|
116
|
+
return {
|
|
117
|
+
name: stake.name,
|
|
118
|
+
collections: stake.collections,
|
|
119
|
+
rarity: Object.keys(stake.rarity)[0],
|
|
120
|
+
stakeVault: stake.stakeVault.toBase58(),
|
|
121
|
+
authority: stake.authority.toBase58(),
|
|
122
|
+
initTs: stake.initTs.toNumber(),
|
|
123
|
+
isLocked: stake.isLocked,
|
|
124
|
+
withdrawTs: stake.withdrawTs.toNumber(),
|
|
125
|
+
mint: stake.mint.toBase58(),
|
|
126
|
+
stakeRewards: stake.stakeRewards.toBase58()
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
exports.formatStake = formatStake;
|
|
130
|
+
const calculateTotalMultiplier = (collections, rank) => {
|
|
131
|
+
let multiplier = 1;
|
|
132
|
+
collections.forEach((collection) => {
|
|
133
|
+
if (stake_1.COLLECTION_MUlTIPLIER[collection]) {
|
|
134
|
+
multiplier *= Number(stake_1.COLLECTION_MUlTIPLIER[collection]);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
let rankMultiplier = (rank.max + 1 - rank.currentPosition) / rank.max;
|
|
138
|
+
return multiplier * rankMultiplier;
|
|
139
|
+
};
|
|
140
|
+
exports.calculateTotalMultiplier = calculateTotalMultiplier;
|
|
141
|
+
const calculateAPR = ({ rewards, rate, amount, baseRewards }) => {
|
|
142
|
+
return ((rewards * rate) / (amount * baseRewards)) * 100;
|
|
143
|
+
};
|
|
144
|
+
exports.calculateAPR = calculateAPR;
|