@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
package/dist/stake.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { AnchorProvider, Program } from '@coral-xyz/anchor';
|
|
2
2
|
import { PublicKey } from '@solana/web3.js';
|
|
3
3
|
import { TriadProtocol } from './types/triad_protocol';
|
|
4
|
-
import {
|
|
4
|
+
import { RpcOptions } from './types';
|
|
5
|
+
import { DepositStakeRewardsArgs, InitializeStakeArgs, StakeArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, UpdateStakeVaultStatusArgs, UpdateStakeRewardsArgs, ClaimStakeRewardsArgs } from './types/stake';
|
|
5
6
|
export default class Stake {
|
|
6
7
|
program: Program<TriadProtocol>;
|
|
7
8
|
provider: AnchorProvider;
|
|
@@ -9,115 +10,29 @@ export default class Stake {
|
|
|
9
10
|
/**
|
|
10
11
|
* Get all Stake Vaults
|
|
11
12
|
*/
|
|
12
|
-
getStakeVaults(): Promise<
|
|
13
|
-
name: string;
|
|
14
|
-
collection: string;
|
|
15
|
-
slots: number;
|
|
16
|
-
amount: number;
|
|
17
|
-
isLocked: boolean;
|
|
18
|
-
usersPaid: PublicKey;
|
|
19
|
-
amountPaid: number;
|
|
20
|
-
amountUsers: number;
|
|
21
|
-
apr: number;
|
|
22
|
-
initTs: number;
|
|
23
|
-
endTs: number;
|
|
24
|
-
}[]>;
|
|
13
|
+
getStakeVaults(): Promise<import("./types/stake").StakeVaultResponse[]>;
|
|
25
14
|
/**
|
|
26
15
|
* Get Stake Vault by name
|
|
27
16
|
* @param stakeVault - Stake Vault name
|
|
28
17
|
*/
|
|
29
|
-
getStakeVaultByName(stakeVault: string): Promise<
|
|
30
|
-
name: string;
|
|
31
|
-
collection: string;
|
|
32
|
-
slots: number;
|
|
33
|
-
amount: number;
|
|
34
|
-
isLocked: boolean;
|
|
35
|
-
usersPaid: PublicKey;
|
|
36
|
-
amountPaid: number;
|
|
37
|
-
amountUsers: number;
|
|
38
|
-
apr: number;
|
|
39
|
-
initTs: number;
|
|
40
|
-
endTs: number;
|
|
41
|
-
}>;
|
|
18
|
+
getStakeVaultByName(stakeVault: string): Promise<import("./types/stake").StakeVaultResponse>;
|
|
42
19
|
/**
|
|
43
|
-
* Get all stakes
|
|
20
|
+
* Get all stakes by vault
|
|
21
|
+
* @param stakeVault - Stake Vault name
|
|
22
|
+
*
|
|
44
23
|
*/
|
|
45
|
-
getStakes(): Promise<
|
|
46
|
-
name: string;
|
|
47
|
-
collections: (({
|
|
48
|
-
undead?: never;
|
|
49
|
-
alligators?: never;
|
|
50
|
-
pyth?: never;
|
|
51
|
-
} & {
|
|
52
|
-
coleta: Record<string, never>;
|
|
53
|
-
}) | ({
|
|
54
|
-
coleta?: never;
|
|
55
|
-
alligators?: never;
|
|
56
|
-
pyth?: never;
|
|
57
|
-
} & {
|
|
58
|
-
undead: Record<string, never>;
|
|
59
|
-
}) | ({
|
|
60
|
-
coleta?: never;
|
|
61
|
-
undead?: never;
|
|
62
|
-
pyth?: never;
|
|
63
|
-
} & {
|
|
64
|
-
alligators: Record<string, never>;
|
|
65
|
-
}) | ({
|
|
66
|
-
coleta?: never;
|
|
67
|
-
undead?: never;
|
|
68
|
-
alligators?: never;
|
|
69
|
-
} & {
|
|
70
|
-
pyth: Record<string, never>;
|
|
71
|
-
}))[];
|
|
72
|
-
rarity: string;
|
|
73
|
-
stakeVault: string;
|
|
74
|
-
authority: string;
|
|
75
|
-
initTs: number;
|
|
76
|
-
isLocked: boolean;
|
|
77
|
-
withdrawTs: number;
|
|
78
|
-
mint: string;
|
|
79
|
-
stakeRewards: string;
|
|
80
|
-
}[]>;
|
|
24
|
+
getStakes(stakeVault: string): Promise<StakeResponse[]>;
|
|
81
25
|
/**
|
|
82
26
|
* Get Stake by wallet
|
|
83
27
|
* @param wallet - User wallet
|
|
28
|
+
* @param stakeVault - Stake Vault name
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
31
|
+
getStakeByWallet(wallet: PublicKey, stakeVault: string): Promise<StakeResponse[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Get Stake Vault Rewards details
|
|
34
|
+
* @param stakeVault - Stake Vault name
|
|
84
35
|
*/
|
|
85
|
-
getStakeByWallet(wallet: PublicKey): Promise<{
|
|
86
|
-
name: string;
|
|
87
|
-
collections: (({
|
|
88
|
-
undead?: never;
|
|
89
|
-
alligators?: never;
|
|
90
|
-
pyth?: never;
|
|
91
|
-
} & {
|
|
92
|
-
coleta: Record<string, never>;
|
|
93
|
-
}) | ({
|
|
94
|
-
coleta?: never;
|
|
95
|
-
alligators?: never;
|
|
96
|
-
pyth?: never;
|
|
97
|
-
} & {
|
|
98
|
-
undead: Record<string, never>;
|
|
99
|
-
}) | ({
|
|
100
|
-
coleta?: never;
|
|
101
|
-
undead?: never;
|
|
102
|
-
pyth?: never;
|
|
103
|
-
} & {
|
|
104
|
-
alligators: Record<string, never>;
|
|
105
|
-
}) | ({
|
|
106
|
-
coleta?: never;
|
|
107
|
-
undead?: never;
|
|
108
|
-
alligators?: never;
|
|
109
|
-
} & {
|
|
110
|
-
pyth: Record<string, never>;
|
|
111
|
-
}))[];
|
|
112
|
-
rarity: string;
|
|
113
|
-
stakeVault: string;
|
|
114
|
-
authority: string;
|
|
115
|
-
initTs: number;
|
|
116
|
-
isLocked: boolean;
|
|
117
|
-
withdrawTs: number;
|
|
118
|
-
mint: string;
|
|
119
|
-
stakeRewards: string;
|
|
120
|
-
}[]>;
|
|
121
36
|
getStakeVaultRewards(stakeVault: string): Promise<{
|
|
122
37
|
amount: number;
|
|
123
38
|
perDay: number;
|
|
@@ -126,14 +41,12 @@ export default class Stake {
|
|
|
126
41
|
period: number;
|
|
127
42
|
days: number[];
|
|
128
43
|
}>;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
days: number[];
|
|
136
|
-
}): Promise<{}>;
|
|
44
|
+
/**
|
|
45
|
+
* Get Stakes by day
|
|
46
|
+
* @param stakeVault - Stake Vault name
|
|
47
|
+
* @param day - Day timestamp
|
|
48
|
+
*/
|
|
49
|
+
getStakesByDay(stakeVault: string, day: number): Promise<StakeResponse[]>;
|
|
137
50
|
/**
|
|
138
51
|
* Stake NFT
|
|
139
52
|
* @param name - NFT name
|
|
@@ -177,4 +90,34 @@ export default class Stake {
|
|
|
177
90
|
*
|
|
178
91
|
*/
|
|
179
92
|
withdraw({ wallet, nftName, mint, stakeVault }: WithdrawArgs, options?: RpcOptions): Promise<string>;
|
|
93
|
+
/**
|
|
94
|
+
* Update Stake Vault Status
|
|
95
|
+
* @param wallet - User wallet
|
|
96
|
+
* @param stakeVault - Name of the stake vault
|
|
97
|
+
* @param isLocked - Status of the stake vault
|
|
98
|
+
* @param week - Current week rewards (Starts from 0)
|
|
99
|
+
*
|
|
100
|
+
*/
|
|
101
|
+
updateStakeVaultStatus({ wallet, isLocked, week, stakeVault }: UpdateStakeVaultStatusArgs, options?: RpcOptions): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Update Stake Rewards
|
|
104
|
+
* @param wallet - User wallet
|
|
105
|
+
* @param nft_name - Name of the nft
|
|
106
|
+
* @param apr - APR based in the current day
|
|
107
|
+
* @param day - Day for update rewards (Starts from 0)
|
|
108
|
+
* @param rewards - Rewards for the day
|
|
109
|
+
*
|
|
110
|
+
*/
|
|
111
|
+
updateStakeRewards({ wallet, day, items }: UpdateStakeRewardsArgs, options?: RpcOptions): Promise<string>;
|
|
112
|
+
/**
|
|
113
|
+
* Claim Stake Rewards
|
|
114
|
+
* @param wallet - User wallet
|
|
115
|
+
* @param mint - NFT mint
|
|
116
|
+
* @param week - Week rewards
|
|
117
|
+
* @param amount - Reward amount
|
|
118
|
+
* @param stakeVault - Name of the stake vault
|
|
119
|
+
* @param nftName - Name of the nft
|
|
120
|
+
*
|
|
121
|
+
*/
|
|
122
|
+
claimStakeRewards({ wallet, mint, week, stakeVault, nftName }: ClaimStakeRewardsArgs, options?: RpcOptions): Promise<string>;
|
|
180
123
|
}
|
package/dist/stake.js
CHANGED
|
@@ -23,19 +23,7 @@ class Stake {
|
|
|
23
23
|
getStakeVaults() {
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
25
|
const response = yield this.program.account.stakeVault.all();
|
|
26
|
-
return response.map((stakeVault) => (
|
|
27
|
-
name: stakeVault.account.name,
|
|
28
|
-
collection: stakeVault.account.collection,
|
|
29
|
-
slots: stakeVault.account.slots.toNumber(),
|
|
30
|
-
amount: stakeVault.account.amount.toNumber(),
|
|
31
|
-
isLocked: stakeVault.account.isLocked,
|
|
32
|
-
usersPaid: stakeVault.account.usersPaid,
|
|
33
|
-
amountPaid: stakeVault.account.amountPaid.toNumber(),
|
|
34
|
-
amountUsers: stakeVault.account.amountUsers.toNumber(),
|
|
35
|
-
apr: stakeVault.account.apr,
|
|
36
|
-
initTs: stakeVault.account.initTs.toNumber(),
|
|
37
|
-
endTs: stakeVault.account.endTs.toNumber()
|
|
38
|
-
}));
|
|
26
|
+
return response.map((stakeVault) => (0, helpers_1.formatStakeVault)(stakeVault.account));
|
|
39
27
|
});
|
|
40
28
|
}
|
|
41
29
|
/**
|
|
@@ -45,112 +33,99 @@ class Stake {
|
|
|
45
33
|
getStakeVaultByName(stakeVault) {
|
|
46
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
35
|
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
48
|
-
|
|
49
|
-
return {
|
|
50
|
-
name: response.name,
|
|
51
|
-
collection: response.collection,
|
|
52
|
-
slots: response.slots.toNumber(),
|
|
53
|
-
amount: response.amount.toNumber(),
|
|
54
|
-
isLocked: response.isLocked,
|
|
55
|
-
usersPaid: response.usersPaid,
|
|
56
|
-
amountPaid: response.amountPaid.toNumber(),
|
|
57
|
-
amountUsers: response.amountUsers.toNumber(),
|
|
58
|
-
apr: response.apr,
|
|
59
|
-
initTs: response.initTs.toNumber(),
|
|
60
|
-
endTs: response.endTs.toNumber()
|
|
61
|
-
};
|
|
36
|
+
return (0, helpers_1.formatStakeVault)(yield this.program.account.stakeVault.fetch(StakeVault));
|
|
62
37
|
});
|
|
63
38
|
}
|
|
64
39
|
/**
|
|
65
|
-
* Get all stakes
|
|
40
|
+
* Get all stakes by vault
|
|
41
|
+
* @param stakeVault - Stake Vault name
|
|
42
|
+
*
|
|
66
43
|
*/
|
|
67
|
-
getStakes() {
|
|
44
|
+
getStakes(stakeVault) {
|
|
68
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
46
|
const response = yield this.program.account.stake.all();
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
stakeVault: stake.account.stakeVault.toBase58(),
|
|
75
|
-
authority: stake.account.authority.toBase58(),
|
|
76
|
-
initTs: stake.account.initTs.toNumber(),
|
|
77
|
-
isLocked: stake.account.isLocked,
|
|
78
|
-
withdrawTs: stake.account.withdrawTs.toNumber(),
|
|
79
|
-
mint: stake.account.mint.toBase58(),
|
|
80
|
-
stakeRewards: stake.account.stakeRewards.toBase58()
|
|
81
|
-
}));
|
|
47
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
48
|
+
return response
|
|
49
|
+
.filter((item) => item.account.stakeVault.toBase58() === StakeVault.toBase58())
|
|
50
|
+
.map((stake) => (0, helpers_1.formatStake)(stake.account));
|
|
82
51
|
});
|
|
83
52
|
}
|
|
84
53
|
/**
|
|
85
54
|
* Get Stake by wallet
|
|
86
55
|
* @param wallet - User wallet
|
|
56
|
+
* @param stakeVault - Stake Vault name
|
|
57
|
+
*
|
|
87
58
|
*/
|
|
88
|
-
getStakeByWallet(wallet) {
|
|
59
|
+
getStakeByWallet(wallet, stakeVault) {
|
|
89
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
const response = yield this.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
61
|
+
const response = yield this.getStakes(stakeVault);
|
|
62
|
+
const stakeVaultByName = yield this.getStakeVaultByName(stakeVault);
|
|
63
|
+
const myStakes = response.filter((item) => item.authority === wallet.toBase58());
|
|
64
|
+
for (const stake of myStakes) {
|
|
65
|
+
try {
|
|
66
|
+
const stakeRewards = yield this.program.account.nftRewards.fetch(new web3_js_1.PublicKey(stake.stakeRewards));
|
|
67
|
+
let start = stakeVaultByName.week * 7;
|
|
68
|
+
let end = stakeVaultByName.week == 4 ? 30 : start + 7;
|
|
69
|
+
stake.apr = stakeRewards.apr;
|
|
70
|
+
stake.dailyRewards = stakeRewards.dailyRewards.map((reward) => reward.toNumber() / Math.pow(10, constants_1.TTRIAD_DECIMALS));
|
|
71
|
+
stake.weeklyRewardsPaid = stakeRewards.weeklyRewardsPaid;
|
|
72
|
+
let rewards = stake.dailyRewards
|
|
73
|
+
.slice(start, end)
|
|
74
|
+
.reduce((a, b) => a + b, 0);
|
|
75
|
+
stake.weeklyRewards = rewards;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
stake.apr = 0;
|
|
79
|
+
stake.dailyRewards = [];
|
|
80
|
+
stake.weeklyRewardsPaid = [];
|
|
81
|
+
stake.weeklyRewards = 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return myStakes;
|
|
105
85
|
});
|
|
106
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Get Stake Vault Rewards details
|
|
89
|
+
* @param stakeVault - Stake Vault name
|
|
90
|
+
*/
|
|
107
91
|
getStakeVaultRewards(stakeVault) {
|
|
108
92
|
return __awaiter(this, void 0, void 0, function* () {
|
|
109
93
|
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
110
94
|
const response = yield this.program.account.stakeVault.fetch(StakeVault);
|
|
95
|
+
const amount = response.amount.toNumber() / Math.pow(10, constants_1.TTRIAD_DECIMALS);
|
|
96
|
+
const period = (response.endTs.toNumber() - response.initTs.toNumber()) / (60 * 60 * 24);
|
|
97
|
+
const netAmount = amount - (amount * constants_1.TTRIAD_FEE) / 100;
|
|
111
98
|
const data = {
|
|
112
|
-
amount:
|
|
113
|
-
perDay:
|
|
114
|
-
perWeek:
|
|
115
|
-
perMonth:
|
|
116
|
-
period
|
|
99
|
+
amount: netAmount,
|
|
100
|
+
perDay: netAmount / period,
|
|
101
|
+
perWeek: (netAmount / period) * 7,
|
|
102
|
+
perMonth: (netAmount / period) * 30,
|
|
103
|
+
period,
|
|
117
104
|
days: []
|
|
118
105
|
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
(response.endTs.toNumber() * 1000 - response.initTs.toNumber() * 1000) /
|
|
122
|
-
(1000 * 60 * 60 * 24);
|
|
123
|
-
data.amount = amount - (amount * constants_1.TTRIAD_FEE) / 100;
|
|
124
|
-
data.perDay = data.amount / data.period;
|
|
125
|
-
data.perWeek = data.perDay * 7;
|
|
126
|
-
data.perMonth = data.perDay * 30;
|
|
127
|
-
const endTsInMs = response.endTs.toNumber() * 1000;
|
|
128
|
-
const initTsInMs = response.initTs.toNumber() * 1000;
|
|
129
|
-
let currentTs = initTsInMs;
|
|
130
|
-
while (currentTs <= endTsInMs) {
|
|
131
|
-
data.days.push(currentTs);
|
|
132
|
-
currentTs = currentTs + 1000 * 60 * 60 * 24;
|
|
106
|
+
for (let ts = response.initTs.toNumber(); ts <= response.endTs.toNumber(); ts += 60 * 60 * 24) {
|
|
107
|
+
data.days.push(ts);
|
|
133
108
|
}
|
|
134
109
|
return data;
|
|
135
110
|
});
|
|
136
111
|
}
|
|
137
|
-
|
|
112
|
+
/**
|
|
113
|
+
* Get Stakes by day
|
|
114
|
+
* @param stakeVault - Stake Vault name
|
|
115
|
+
* @param day - Day timestamp
|
|
116
|
+
*/
|
|
117
|
+
getStakesByDay(stakeVault, day) {
|
|
138
118
|
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
-
const stakes = yield this.
|
|
140
|
-
const rewards =
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
rewards[key].push(stake);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}
|
|
119
|
+
const stakes = yield this.getStakes(stakeVault);
|
|
120
|
+
const rewards = [];
|
|
121
|
+
stakes.forEach((stake) => {
|
|
122
|
+
const date = stake.initTs * 1000;
|
|
123
|
+
const stakeDay = day * 1000;
|
|
124
|
+
const currentDate = new Date().getTime();
|
|
125
|
+
if (date <= stakeDay && stakeDay <= currentDate) {
|
|
126
|
+
rewards.push(stake);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
154
129
|
return rewards;
|
|
155
130
|
});
|
|
156
131
|
}
|
|
@@ -309,6 +284,7 @@ class Stake {
|
|
|
309
284
|
signer: wallet,
|
|
310
285
|
fromAta: FromAta,
|
|
311
286
|
toAta: ToAta,
|
|
287
|
+
admin: new web3_js_1.PublicKey('82ppCojm3yrEKgdpH8B5AmBJTU1r1uAWXFWhxvPs9UCR'),
|
|
312
288
|
mint: mint
|
|
313
289
|
});
|
|
314
290
|
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
@@ -321,5 +297,120 @@ class Stake {
|
|
|
321
297
|
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
322
298
|
});
|
|
323
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Update Stake Vault Status
|
|
302
|
+
* @param wallet - User wallet
|
|
303
|
+
* @param stakeVault - Name of the stake vault
|
|
304
|
+
* @param isLocked - Status of the stake vault
|
|
305
|
+
* @param week - Current week rewards (Starts from 0)
|
|
306
|
+
*
|
|
307
|
+
*/
|
|
308
|
+
updateStakeVaultStatus({ wallet, isLocked, week, stakeVault }, options) {
|
|
309
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
310
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
311
|
+
const method = this.program.methods
|
|
312
|
+
.updateStakeVaultStatus({
|
|
313
|
+
isLocked,
|
|
314
|
+
week
|
|
315
|
+
})
|
|
316
|
+
.accounts({
|
|
317
|
+
signer: wallet,
|
|
318
|
+
stakeVault: StakeVault
|
|
319
|
+
});
|
|
320
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
321
|
+
method.postInstructions([
|
|
322
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
323
|
+
microLamports: options.microLamports
|
|
324
|
+
})
|
|
325
|
+
]);
|
|
326
|
+
}
|
|
327
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Update Stake Rewards
|
|
332
|
+
* @param wallet - User wallet
|
|
333
|
+
* @param nft_name - Name of the nft
|
|
334
|
+
* @param apr - APR based in the current day
|
|
335
|
+
* @param day - Day for update rewards (Starts from 0)
|
|
336
|
+
* @param rewards - Rewards for the day
|
|
337
|
+
*
|
|
338
|
+
*/
|
|
339
|
+
updateStakeRewards({ wallet, day, items }, options) {
|
|
340
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
341
|
+
const ixs = [
|
|
342
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
343
|
+
microLamports: options.microLamports
|
|
344
|
+
}),
|
|
345
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
|
|
346
|
+
units: 600000
|
|
347
|
+
})
|
|
348
|
+
];
|
|
349
|
+
for (const item of items) {
|
|
350
|
+
const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, item.nftName);
|
|
351
|
+
ixs.push(yield this.program.methods
|
|
352
|
+
.updateStakeRewards({
|
|
353
|
+
rewards: item.rewards,
|
|
354
|
+
apr: item.apr,
|
|
355
|
+
day
|
|
356
|
+
})
|
|
357
|
+
.accounts({
|
|
358
|
+
signer: wallet,
|
|
359
|
+
stake: Stake
|
|
360
|
+
})
|
|
361
|
+
.instruction());
|
|
362
|
+
}
|
|
363
|
+
const { blockhash } = yield this.provider.connection.getLatestBlockhash();
|
|
364
|
+
const messageV0 = new web3_js_1.TransactionMessage({
|
|
365
|
+
instructions: ixs,
|
|
366
|
+
recentBlockhash: blockhash,
|
|
367
|
+
payerKey: wallet
|
|
368
|
+
}).compileToV0Message();
|
|
369
|
+
const tx = new web3_js_1.VersionedTransaction(messageV0);
|
|
370
|
+
return this.provider.sendAndConfirm(tx, [], {
|
|
371
|
+
skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Claim Stake Rewards
|
|
377
|
+
* @param wallet - User wallet
|
|
378
|
+
* @param mint - NFT mint
|
|
379
|
+
* @param week - Week rewards
|
|
380
|
+
* @param amount - Reward amount
|
|
381
|
+
* @param stakeVault - Name of the stake vault
|
|
382
|
+
* @param nftName - Name of the nft
|
|
383
|
+
*
|
|
384
|
+
*/
|
|
385
|
+
claimStakeRewards({ wallet, mint, week, stakeVault, nftName }, options) {
|
|
386
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
387
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
388
|
+
const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, nftName);
|
|
389
|
+
const NFTRewards = (0, helpers_1.getNFTRewardsAddressSync)(this.program.programId, Stake);
|
|
390
|
+
const FromAta = (0, helpers_1.getATASync)(StakeVault, mint);
|
|
391
|
+
const ToAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
392
|
+
const method = this.program.methods
|
|
393
|
+
.claimStakeRewards({
|
|
394
|
+
week
|
|
395
|
+
})
|
|
396
|
+
.accounts({
|
|
397
|
+
signer: wallet,
|
|
398
|
+
fromAta: FromAta,
|
|
399
|
+
toAta: ToAta,
|
|
400
|
+
mint: mint,
|
|
401
|
+
nftRewards: NFTRewards,
|
|
402
|
+
stake: Stake,
|
|
403
|
+
stakeVault: StakeVault
|
|
404
|
+
});
|
|
405
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
406
|
+
method.postInstructions([
|
|
407
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
408
|
+
microLamports: options.microLamports
|
|
409
|
+
})
|
|
410
|
+
]);
|
|
411
|
+
}
|
|
412
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
413
|
+
});
|
|
414
|
+
}
|
|
324
415
|
}
|
|
325
416
|
exports.default = Stake;
|