@triadxyz/triad-protocol 0.0.1-beta → 0.0.2-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 +51 -108
- package/dist/stake.js +183 -92
- package/dist/test.js +92 -36
- package/dist/types/idl_triad_protocol.json +250 -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 +250 -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
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import BN from 'bn.js';
|
|
3
|
+
export type Collection = 'alligators' | 'coleta' | 'undead' | 'pyth';
|
|
4
|
+
export type StakeArgs = {
|
|
5
|
+
name: string;
|
|
6
|
+
wallet: PublicKey;
|
|
7
|
+
stakeVault: string;
|
|
8
|
+
mint: PublicKey;
|
|
9
|
+
collections: Record<Collection, boolean>;
|
|
10
|
+
rarity: {
|
|
11
|
+
common: {};
|
|
12
|
+
} | {
|
|
13
|
+
uncommon: {};
|
|
14
|
+
} | {
|
|
15
|
+
rare: {};
|
|
16
|
+
} | {
|
|
17
|
+
epic: {};
|
|
18
|
+
} | {
|
|
19
|
+
legendary: {};
|
|
20
|
+
} | {
|
|
21
|
+
mythic: {};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export type InitializeStakeArgs = {
|
|
25
|
+
name: string;
|
|
26
|
+
slots: BN;
|
|
27
|
+
amount: BN;
|
|
28
|
+
collection: string;
|
|
29
|
+
};
|
|
30
|
+
export type DepositStakeRewardsArgs = {
|
|
31
|
+
wallet: PublicKey;
|
|
32
|
+
amount: BN;
|
|
33
|
+
mint: PublicKey;
|
|
34
|
+
stakeVault: string;
|
|
35
|
+
};
|
|
36
|
+
export type RequestWithdrawArgs = {
|
|
37
|
+
wallet: PublicKey;
|
|
38
|
+
nftName: string;
|
|
39
|
+
mint: PublicKey;
|
|
40
|
+
stakeVault: string;
|
|
41
|
+
};
|
|
42
|
+
export type WithdrawArgs = {
|
|
43
|
+
wallet: PublicKey;
|
|
44
|
+
nftName: string;
|
|
45
|
+
mint: PublicKey;
|
|
46
|
+
stakeVault: string;
|
|
47
|
+
};
|
|
48
|
+
export type UpdateStakeVaultStatusArgs = {
|
|
49
|
+
wallet: PublicKey;
|
|
50
|
+
isLocked: boolean;
|
|
51
|
+
week: number;
|
|
52
|
+
stakeVault: string;
|
|
53
|
+
};
|
|
54
|
+
export type ClaimStakeRewardsArgs = {
|
|
55
|
+
wallet: PublicKey;
|
|
56
|
+
week: number;
|
|
57
|
+
mint: PublicKey;
|
|
58
|
+
stakeVault: string;
|
|
59
|
+
nftName: string;
|
|
60
|
+
};
|
|
61
|
+
export type UpdateStakeRewardsArgs = {
|
|
62
|
+
day: number;
|
|
63
|
+
wallet: PublicKey;
|
|
64
|
+
items: {
|
|
65
|
+
rewards: BN;
|
|
66
|
+
apr: number;
|
|
67
|
+
nftName: string;
|
|
68
|
+
}[];
|
|
69
|
+
};
|
|
70
|
+
export declare enum RARITY_WEIGHT {
|
|
71
|
+
COMMON = 1,
|
|
72
|
+
UNCOMMON = 2,
|
|
73
|
+
RARE = 3,
|
|
74
|
+
EPIC = 4,
|
|
75
|
+
LEGENDARY = 5,
|
|
76
|
+
MYTHIC = 6
|
|
77
|
+
}
|
|
78
|
+
export declare enum COLLECTION_MUlTIPLIER {
|
|
79
|
+
ALLIGATORS = 1.5,
|
|
80
|
+
COLETA = 1.5,
|
|
81
|
+
UNDEAD = 1.5,
|
|
82
|
+
UNDEAD_TRIADFI = 2.5,
|
|
83
|
+
PYTH = 1.5
|
|
84
|
+
}
|
|
85
|
+
export type StakeVaultResponse = {
|
|
86
|
+
name: string;
|
|
87
|
+
collection: string;
|
|
88
|
+
slots: number;
|
|
89
|
+
amount: number;
|
|
90
|
+
isLocked: boolean;
|
|
91
|
+
usersPaid: PublicKey;
|
|
92
|
+
amountPaid: number;
|
|
93
|
+
amountUsers: number;
|
|
94
|
+
apr: number;
|
|
95
|
+
week: number;
|
|
96
|
+
initTs: number;
|
|
97
|
+
endTs: number;
|
|
98
|
+
};
|
|
99
|
+
export type StakeResponse = {
|
|
100
|
+
name: string;
|
|
101
|
+
collections: Record<Collection, {}>;
|
|
102
|
+
rarity: string;
|
|
103
|
+
stakeVault: string;
|
|
104
|
+
authority: string;
|
|
105
|
+
initTs: number;
|
|
106
|
+
isLocked: boolean;
|
|
107
|
+
withdrawTs: number;
|
|
108
|
+
mint: string;
|
|
109
|
+
stakeRewards: string;
|
|
110
|
+
apr?: number;
|
|
111
|
+
dailyRewards?: number[];
|
|
112
|
+
weeklyRewardsPaid?: boolean[];
|
|
113
|
+
weeklyRewards?: number;
|
|
114
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COLLECTION_MUlTIPLIER = exports.RARITY_WEIGHT = void 0;
|
|
4
|
+
var RARITY_WEIGHT;
|
|
5
|
+
(function (RARITY_WEIGHT) {
|
|
6
|
+
RARITY_WEIGHT[RARITY_WEIGHT["COMMON"] = 1] = "COMMON";
|
|
7
|
+
RARITY_WEIGHT[RARITY_WEIGHT["UNCOMMON"] = 2] = "UNCOMMON";
|
|
8
|
+
RARITY_WEIGHT[RARITY_WEIGHT["RARE"] = 3] = "RARE";
|
|
9
|
+
RARITY_WEIGHT[RARITY_WEIGHT["EPIC"] = 4] = "EPIC";
|
|
10
|
+
RARITY_WEIGHT[RARITY_WEIGHT["LEGENDARY"] = 5] = "LEGENDARY";
|
|
11
|
+
RARITY_WEIGHT[RARITY_WEIGHT["MYTHIC"] = 6] = "MYTHIC";
|
|
12
|
+
})(RARITY_WEIGHT || (exports.RARITY_WEIGHT = RARITY_WEIGHT = {}));
|
|
13
|
+
var COLLECTION_MUlTIPLIER;
|
|
14
|
+
(function (COLLECTION_MUlTIPLIER) {
|
|
15
|
+
COLLECTION_MUlTIPLIER[COLLECTION_MUlTIPLIER["ALLIGATORS"] = 1.5] = "ALLIGATORS";
|
|
16
|
+
COLLECTION_MUlTIPLIER[COLLECTION_MUlTIPLIER["COLETA"] = 1.5] = "COLETA";
|
|
17
|
+
COLLECTION_MUlTIPLIER[COLLECTION_MUlTIPLIER["UNDEAD"] = 1.5] = "UNDEAD";
|
|
18
|
+
COLLECTION_MUlTIPLIER[COLLECTION_MUlTIPLIER["UNDEAD_TRIADFI"] = 2.5] = "UNDEAD_TRIADFI";
|
|
19
|
+
COLLECTION_MUlTIPLIER[COLLECTION_MUlTIPLIER["PYTH"] = 1.5] = "PYTH";
|
|
20
|
+
})(COLLECTION_MUlTIPLIER || (exports.COLLECTION_MUlTIPLIER = COLLECTION_MUlTIPLIER = {}));
|
|
@@ -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];
|
|
@@ -548,6 +605,80 @@ export type TriadProtocol = {
|
|
|
548
605
|
}
|
|
549
606
|
];
|
|
550
607
|
},
|
|
608
|
+
{
|
|
609
|
+
name: 'updateStakeRewards';
|
|
610
|
+
discriminator: [39, 82, 38, 43, 234, 67, 69, 94];
|
|
611
|
+
accounts: [
|
|
612
|
+
{
|
|
613
|
+
name: 'signer';
|
|
614
|
+
writable: true;
|
|
615
|
+
signer: true;
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
name: 'stake';
|
|
619
|
+
writable: true;
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
name: 'nftRewards';
|
|
623
|
+
writable: true;
|
|
624
|
+
pda: {
|
|
625
|
+
seeds: [
|
|
626
|
+
{
|
|
627
|
+
kind: 'const';
|
|
628
|
+
value: [110, 102, 116, 95, 114, 101, 119, 97, 114, 100, 115];
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
kind: 'account';
|
|
632
|
+
path: 'stake';
|
|
633
|
+
}
|
|
634
|
+
];
|
|
635
|
+
};
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
name: 'systemProgram';
|
|
639
|
+
address: '11111111111111111111111111111111';
|
|
640
|
+
}
|
|
641
|
+
];
|
|
642
|
+
args: [
|
|
643
|
+
{
|
|
644
|
+
name: 'args';
|
|
645
|
+
type: {
|
|
646
|
+
defined: {
|
|
647
|
+
name: 'updateStakeRewardsArgs';
|
|
648
|
+
};
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
];
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
name: 'updateStakeVaultStatus';
|
|
655
|
+
discriminator: [71, 64, 188, 150, 86, 254, 221, 65];
|
|
656
|
+
accounts: [
|
|
657
|
+
{
|
|
658
|
+
name: 'signer';
|
|
659
|
+
writable: true;
|
|
660
|
+
signer: true;
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
name: 'stakeVault';
|
|
664
|
+
writable: true;
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
name: 'systemProgram';
|
|
668
|
+
address: '11111111111111111111111111111111';
|
|
669
|
+
}
|
|
670
|
+
];
|
|
671
|
+
args: [
|
|
672
|
+
{
|
|
673
|
+
name: 'args';
|
|
674
|
+
type: {
|
|
675
|
+
defined: {
|
|
676
|
+
name: 'updateStakeVaultStatusArgs';
|
|
677
|
+
};
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
];
|
|
681
|
+
},
|
|
551
682
|
{
|
|
552
683
|
name: 'updateTickerPrice';
|
|
553
684
|
discriminator: [203, 166, 139, 83, 76, 144, 250, 29];
|
|
@@ -618,6 +749,14 @@ export type TriadProtocol = {
|
|
|
618
749
|
];
|
|
619
750
|
};
|
|
620
751
|
},
|
|
752
|
+
{
|
|
753
|
+
name: 'admin';
|
|
754
|
+
writable: true;
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
name: 'nftRewards';
|
|
758
|
+
writable: true;
|
|
759
|
+
},
|
|
621
760
|
{
|
|
622
761
|
name: 'mint';
|
|
623
762
|
writable: true;
|
|
@@ -656,6 +795,10 @@ export type TriadProtocol = {
|
|
|
656
795
|
}
|
|
657
796
|
];
|
|
658
797
|
accounts: [
|
|
798
|
+
{
|
|
799
|
+
name: 'nftRewards';
|
|
800
|
+
discriminator: [210, 99, 18, 65, 58, 128, 167, 91];
|
|
801
|
+
},
|
|
659
802
|
{
|
|
660
803
|
name: 'stake';
|
|
661
804
|
discriminator: [150, 197, 176, 29, 55, 132, 112, 149];
|
|
@@ -694,106 +837,113 @@ export type TriadProtocol = {
|
|
|
694
837
|
errors: [
|
|
695
838
|
{
|
|
696
839
|
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
840
|
name: 'invalidAccount';
|
|
708
841
|
msg: 'Invalid account';
|
|
709
842
|
},
|
|
710
843
|
{
|
|
711
|
-
code:
|
|
844
|
+
code: 6001;
|
|
712
845
|
name: 'unauthorized';
|
|
713
846
|
msg: 'Unauthorized access';
|
|
714
847
|
},
|
|
715
848
|
{
|
|
716
|
-
code:
|
|
717
|
-
name: 'alphaVantageApiError';
|
|
718
|
-
msg: 'Failed to get data from Vybe Network';
|
|
719
|
-
},
|
|
720
|
-
{
|
|
721
|
-
code: 6005;
|
|
849
|
+
code: 6002;
|
|
722
850
|
name: 'depositFailed';
|
|
723
851
|
msg: 'Failed to deposit';
|
|
724
852
|
},
|
|
725
853
|
{
|
|
726
|
-
code:
|
|
854
|
+
code: 6003;
|
|
727
855
|
name: 'invalidOwnerAuthority';
|
|
728
856
|
msg: 'Invalid Owner authority';
|
|
729
857
|
},
|
|
730
858
|
{
|
|
731
|
-
code:
|
|
859
|
+
code: 6004;
|
|
732
860
|
name: 'invalidPosition';
|
|
733
861
|
msg: 'Invalid Position';
|
|
734
862
|
},
|
|
735
863
|
{
|
|
736
|
-
code:
|
|
864
|
+
code: 6005;
|
|
737
865
|
name: 'invalidTickerPosition';
|
|
738
866
|
msg: 'Invalid Ticker position';
|
|
739
867
|
},
|
|
740
868
|
{
|
|
741
|
-
code:
|
|
869
|
+
code: 6006;
|
|
742
870
|
name: 'noFreePositionSlot';
|
|
743
871
|
msg: 'No free position slot';
|
|
744
872
|
},
|
|
745
873
|
{
|
|
746
|
-
code:
|
|
874
|
+
code: 6007;
|
|
747
875
|
name: 'invalidMintAddress';
|
|
748
876
|
msg: 'Invalid Mint address';
|
|
749
877
|
},
|
|
750
878
|
{
|
|
751
|
-
code:
|
|
879
|
+
code: 6008;
|
|
752
880
|
name: 'invalidProfitShare';
|
|
753
881
|
msg: 'Invalid Profit Share';
|
|
754
882
|
},
|
|
755
883
|
{
|
|
756
|
-
code:
|
|
884
|
+
code: 6009;
|
|
757
885
|
name: 'invalidDepositAmount';
|
|
758
886
|
msg: 'Invalid Deposit Amount';
|
|
759
887
|
},
|
|
760
888
|
{
|
|
761
|
-
code:
|
|
889
|
+
code: 6010;
|
|
762
890
|
name: 'invalidWithdrawAmount';
|
|
763
891
|
msg: 'Invalid Withdraw Amount';
|
|
764
892
|
},
|
|
765
893
|
{
|
|
766
|
-
code:
|
|
894
|
+
code: 6011;
|
|
767
895
|
name: 'invalidStakeVault';
|
|
768
896
|
msg: 'Invalid Stake Vault';
|
|
769
897
|
},
|
|
770
898
|
{
|
|
771
|
-
code:
|
|
899
|
+
code: 6012;
|
|
772
900
|
name: 'invalidStakeVaultAuthority';
|
|
773
901
|
msg: 'Invalid Stake Vault Authority';
|
|
774
902
|
},
|
|
775
903
|
{
|
|
776
|
-
code:
|
|
904
|
+
code: 6013;
|
|
777
905
|
name: 'invalidStakeVaultAmount';
|
|
778
906
|
msg: 'Invalid Stake Vault Amount';
|
|
779
907
|
},
|
|
780
908
|
{
|
|
781
|
-
code:
|
|
909
|
+
code: 6014;
|
|
782
910
|
name: 'stakeVaultLocked';
|
|
783
911
|
msg: 'Stake Vault Available';
|
|
784
912
|
},
|
|
785
913
|
{
|
|
786
|
-
code:
|
|
914
|
+
code: 6015;
|
|
787
915
|
name: 'stakeLocked';
|
|
788
916
|
msg: 'Stake is locked';
|
|
789
917
|
},
|
|
790
918
|
{
|
|
791
|
-
code:
|
|
919
|
+
code: 6016;
|
|
792
920
|
name: 'stakeVaultFull';
|
|
793
921
|
msg: 'Stake Vault Full';
|
|
922
|
+
},
|
|
923
|
+
{
|
|
924
|
+
code: 6017;
|
|
925
|
+
name: 'invalidMint';
|
|
926
|
+
msg: 'Invalid Mint';
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
code: 6018;
|
|
930
|
+
name: 'invalidStakeVaultWeek';
|
|
931
|
+
msg: 'Invalid Stake Vault Week';
|
|
794
932
|
}
|
|
795
933
|
];
|
|
796
934
|
types: [
|
|
935
|
+
{
|
|
936
|
+
name: 'claimStakeRewardsArgs';
|
|
937
|
+
type: {
|
|
938
|
+
kind: 'struct';
|
|
939
|
+
fields: [
|
|
940
|
+
{
|
|
941
|
+
name: 'week';
|
|
942
|
+
type: 'u8';
|
|
943
|
+
}
|
|
944
|
+
];
|
|
945
|
+
};
|
|
946
|
+
},
|
|
797
947
|
{
|
|
798
948
|
name: 'closePositionArgs';
|
|
799
949
|
type: {
|
|
@@ -918,6 +1068,34 @@ export type TriadProtocol = {
|
|
|
918
1068
|
];
|
|
919
1069
|
};
|
|
920
1070
|
},
|
|
1071
|
+
{
|
|
1072
|
+
name: 'nftRewards';
|
|
1073
|
+
type: {
|
|
1074
|
+
kind: 'struct';
|
|
1075
|
+
fields: [
|
|
1076
|
+
{
|
|
1077
|
+
name: 'stake';
|
|
1078
|
+
type: 'pubkey';
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
name: 'dailyRewards';
|
|
1082
|
+
type: {
|
|
1083
|
+
array: ['u64', 30];
|
|
1084
|
+
};
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
name: 'weeklyRewardsPaid';
|
|
1088
|
+
type: {
|
|
1089
|
+
array: ['bool', 5];
|
|
1090
|
+
};
|
|
1091
|
+
},
|
|
1092
|
+
{
|
|
1093
|
+
name: 'apr';
|
|
1094
|
+
type: 'f32';
|
|
1095
|
+
}
|
|
1096
|
+
];
|
|
1097
|
+
};
|
|
1098
|
+
},
|
|
921
1099
|
{
|
|
922
1100
|
name: 'openPositionArgs';
|
|
923
1101
|
type: {
|
|
@@ -1193,10 +1371,14 @@ export type TriadProtocol = {
|
|
|
1193
1371
|
name: 'usersPaid';
|
|
1194
1372
|
type: 'pubkey';
|
|
1195
1373
|
},
|
|
1374
|
+
{
|
|
1375
|
+
name: 'week';
|
|
1376
|
+
type: 'u8';
|
|
1377
|
+
},
|
|
1196
1378
|
{
|
|
1197
1379
|
name: 'padding';
|
|
1198
1380
|
type: {
|
|
1199
|
-
array: ['u8',
|
|
1381
|
+
array: ['u8', 56];
|
|
1200
1382
|
};
|
|
1201
1383
|
}
|
|
1202
1384
|
];
|
|
@@ -1272,6 +1454,42 @@ export type TriadProtocol = {
|
|
|
1272
1454
|
];
|
|
1273
1455
|
};
|
|
1274
1456
|
},
|
|
1457
|
+
{
|
|
1458
|
+
name: 'updateStakeRewardsArgs';
|
|
1459
|
+
type: {
|
|
1460
|
+
kind: 'struct';
|
|
1461
|
+
fields: [
|
|
1462
|
+
{
|
|
1463
|
+
name: 'day';
|
|
1464
|
+
type: 'u8';
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
name: 'rewards';
|
|
1468
|
+
type: 'u64';
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
name: 'apr';
|
|
1472
|
+
type: 'f32';
|
|
1473
|
+
}
|
|
1474
|
+
];
|
|
1475
|
+
};
|
|
1476
|
+
},
|
|
1477
|
+
{
|
|
1478
|
+
name: 'updateStakeVaultStatusArgs';
|
|
1479
|
+
type: {
|
|
1480
|
+
kind: 'struct';
|
|
1481
|
+
fields: [
|
|
1482
|
+
{
|
|
1483
|
+
name: 'isLocked';
|
|
1484
|
+
type: 'bool';
|
|
1485
|
+
},
|
|
1486
|
+
{
|
|
1487
|
+
name: 'week';
|
|
1488
|
+
type: 'u8';
|
|
1489
|
+
}
|
|
1490
|
+
];
|
|
1491
|
+
};
|
|
1492
|
+
},
|
|
1275
1493
|
{
|
|
1276
1494
|
name: 'updateTickerPriceArgs';
|
|
1277
1495
|
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;
|