@triadxyz/triad-protocol 0.1.2-alpha.8 → 0.1.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/index.d.ts +2 -0
- package/dist/index.js +4 -3
- package/dist/stake.d.ts +135 -0
- package/dist/stake.js +483 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +107 -0
- package/dist/ticker.js +0 -6
- package/dist/types/idl_triad_protocol.json +1902 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +2 -0
- package/dist/types/stake.d.ts +130 -0
- package/dist/types/stake.js +20 -0
- package/dist/types/triad_protocol.d.ts +1527 -405
- package/dist/types/triad_protocol.js +0 -664
- package/dist/utils/constants.d.ts +31 -0
- package/dist/utils/constants.js +14 -1
- package/dist/utils/helpers.d.ts +19 -0
- package/dist/utils/helpers.js +88 -1
- package/dist/utils/stake-season-1/rarity.json +11036 -0
- package/dist/utils/stake-season-1/users-collections-week-1.json +3290 -0
- package/dist/vault.js +22 -6
- package/package.json +9 -8
package/dist/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { Connection, PublicKey } from '@solana/web3.js';
|
|
|
3
3
|
import { TriadProtocol } from './types/triad_protocol';
|
|
4
4
|
import Ticker from './ticker';
|
|
5
5
|
import Vault from './vault';
|
|
6
|
+
import Stake from './stake';
|
|
6
7
|
export default class TriadProtocolClient {
|
|
7
8
|
program: Program<TriadProtocol>;
|
|
8
9
|
provider: AnchorProvider;
|
|
9
10
|
ticker: Ticker;
|
|
10
11
|
vault: Vault;
|
|
12
|
+
stake: Stake;
|
|
11
13
|
constructor(connection: Connection, wallet: Wallet);
|
|
12
14
|
getUserPositions: (userWallet: PublicKey) => Promise<{}[]>;
|
|
13
15
|
}
|
package/dist/index.js
CHANGED
|
@@ -13,11 +13,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
16
|
-
const
|
|
17
|
-
const constants_1 = require("./utils/constants");
|
|
16
|
+
const idl_triad_protocol_json_1 = __importDefault(require("./types/idl_triad_protocol.json"));
|
|
18
17
|
const ticker_1 = __importDefault(require("./ticker"));
|
|
19
18
|
const vault_1 = __importDefault(require("./vault"));
|
|
20
19
|
const helpers_1 = require("./utils/helpers");
|
|
20
|
+
const stake_1 = __importDefault(require("./stake"));
|
|
21
21
|
class TriadProtocolClient {
|
|
22
22
|
constructor(connection, wallet) {
|
|
23
23
|
this.getUserPositions = (userWallet) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -42,9 +42,10 @@ class TriadProtocolClient {
|
|
|
42
42
|
return positions;
|
|
43
43
|
});
|
|
44
44
|
this.provider = new anchor_1.AnchorProvider(connection, wallet, anchor_1.AnchorProvider.defaultOptions());
|
|
45
|
-
this.program = new anchor_1.Program(
|
|
45
|
+
this.program = new anchor_1.Program(idl_triad_protocol_json_1.default, this.provider);
|
|
46
46
|
this.ticker = new ticker_1.default(this.program, this.provider);
|
|
47
47
|
this.vault = new vault_1.default(this.program, this.provider);
|
|
48
|
+
this.stake = new stake_1.default(this.program, this.provider);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
exports.default = TriadProtocolClient;
|
package/dist/stake.d.ts
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { AnchorProvider, Program } from '@coral-xyz/anchor';
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { TriadProtocol } from './types/triad_protocol';
|
|
4
|
+
import { RpcOptions } from './types';
|
|
5
|
+
import { DepositStakeRewardsArgs, InitializeStakeArgs, StakeArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, UpdateStakeVaultStatusArgs, UpdateStakeRewardsArgs, ClaimStakeRewardsArgs, CreateUserArgs } from './types/stake';
|
|
6
|
+
export default class Stake {
|
|
7
|
+
program: Program<TriadProtocol>;
|
|
8
|
+
provider: AnchorProvider;
|
|
9
|
+
constructor(program: Program<TriadProtocol>, provider: AnchorProvider);
|
|
10
|
+
/**
|
|
11
|
+
* Get all Stake Vaults
|
|
12
|
+
*/
|
|
13
|
+
getStakeVaults(): Promise<import("./types/stake").StakeVaultResponse[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Get all Users
|
|
16
|
+
*/
|
|
17
|
+
getUsers(): Promise<import("./types/stake").UserResponse[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Get Stake Vault by name
|
|
20
|
+
* @param stakeVault - Stake Vault name
|
|
21
|
+
*/
|
|
22
|
+
getStakeVaultByName(stakeVault: string): Promise<import("./types/stake").StakeVaultResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Get all stakes by vault
|
|
25
|
+
* @param stakeVault - Stake Vault name
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
getStakes(stakeVault: string): Promise<StakeResponse[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Get Stake by wallet
|
|
31
|
+
* @param wallet - User wallet
|
|
32
|
+
* @param stakeVault - Stake Vault name
|
|
33
|
+
*
|
|
34
|
+
*/
|
|
35
|
+
getStakeByWallet(wallet: PublicKey, stakeVault: string): Promise<StakeResponse[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Get Stake Vault Rewards details
|
|
38
|
+
* @param stakeVault - Stake Vault name
|
|
39
|
+
*/
|
|
40
|
+
getStakeVaultRewards(stakeVault: string): Promise<{
|
|
41
|
+
amount: number;
|
|
42
|
+
perDay: number;
|
|
43
|
+
perWeek: number;
|
|
44
|
+
perMonth: number;
|
|
45
|
+
period: number;
|
|
46
|
+
days: number[];
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Get Stakes by day
|
|
50
|
+
* @param stakeVault - Stake Vault name
|
|
51
|
+
* @param day - Day timestamp
|
|
52
|
+
*/
|
|
53
|
+
getStakesByDay(stakeVault: string, day: number): Promise<StakeResponse[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Stake NFT
|
|
56
|
+
* @param name - NFT name
|
|
57
|
+
* @param wallet - User wallet
|
|
58
|
+
* @param mint - NFT mint
|
|
59
|
+
* @param collections - NFT collections
|
|
60
|
+
* @param rarity - NFT rarity
|
|
61
|
+
*
|
|
62
|
+
*/
|
|
63
|
+
stakeNft({ name, wallet, mint, collections, rarity, stakeVault }: StakeArgs, options?: RpcOptions): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Initialize Stake Vault
|
|
66
|
+
* @param name - The ticker's name
|
|
67
|
+
* @param slots - Amount available to users joining the vault
|
|
68
|
+
* @param collection - The Collection name
|
|
69
|
+
*
|
|
70
|
+
*/
|
|
71
|
+
initializeStakeVault({ name, slots, collection, amount }: InitializeStakeArgs, options?: RpcOptions): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Deposit Stake Rewards
|
|
74
|
+
* @param wallet - User wallet
|
|
75
|
+
* @param mint - NFT mint
|
|
76
|
+
* @param amount - Reward amount
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
depositStakeRewards({ wallet, mint, amount, stakeVault }: DepositStakeRewardsArgs, options?: RpcOptions): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Request Withdraw
|
|
82
|
+
* @param wallet - User wallet
|
|
83
|
+
* @param nftName - NFT name
|
|
84
|
+
* @param stakeVault - Name of the stake vault
|
|
85
|
+
*
|
|
86
|
+
*/
|
|
87
|
+
requestWithdraw({ wallet, nftName, mint, stakeVault }: RequestWithdrawArgs, options?: RpcOptions): Promise<string>;
|
|
88
|
+
/**
|
|
89
|
+
* Withdraw Stake
|
|
90
|
+
* @param wallet - User wallet
|
|
91
|
+
* @param nftName - Stake name
|
|
92
|
+
* @param mint - NFT mint
|
|
93
|
+
* @param stakeVault - Name of the stake vault
|
|
94
|
+
*
|
|
95
|
+
*/
|
|
96
|
+
withdrawStake({ wallet, nftName, mint, stakeVault }: WithdrawArgs, options?: RpcOptions): Promise<string>;
|
|
97
|
+
/**
|
|
98
|
+
* Update Stake Vault Status
|
|
99
|
+
* @param wallet - User wallet
|
|
100
|
+
* @param stakeVault - Name of the stake vault
|
|
101
|
+
* @param isLocked - Status of the stake vault
|
|
102
|
+
* @param week - Current week rewards (Starts from 0)
|
|
103
|
+
*
|
|
104
|
+
*/
|
|
105
|
+
updateStakeVaultStatus({ wallet, isLocked, week, stakeVault }: UpdateStakeVaultStatusArgs, options?: RpcOptions): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Update Stake Rewards
|
|
108
|
+
* @param wallet - User wallet
|
|
109
|
+
* @param nft_name - Name of the nft
|
|
110
|
+
* @param apr - APR based in the current day
|
|
111
|
+
* @param day - Day for update rewards (Starts from 0)
|
|
112
|
+
* @param rewards - Rewards for the day
|
|
113
|
+
*
|
|
114
|
+
*/
|
|
115
|
+
updateStakeRewards({ wallet, day, items }: UpdateStakeRewardsArgs, options?: RpcOptions): Promise<string>;
|
|
116
|
+
/**
|
|
117
|
+
* Claim Stake Rewards
|
|
118
|
+
* @param wallet - User wallet
|
|
119
|
+
* @param mint - NFT mint
|
|
120
|
+
* @param week - Week rewards
|
|
121
|
+
* @param stakeVault - Name of the stake vault
|
|
122
|
+
* @param nftName - Name of the nft
|
|
123
|
+
*
|
|
124
|
+
*/
|
|
125
|
+
claimStakeRewards({ wallet, mint, week, stakeVault, nftName }: ClaimStakeRewardsArgs, options?: RpcOptions): Promise<string>;
|
|
126
|
+
/**
|
|
127
|
+
* Create User
|
|
128
|
+
* @param wallet - User wallet
|
|
129
|
+
* @param name - user name
|
|
130
|
+
* @param referral - user referral
|
|
131
|
+
*
|
|
132
|
+
*/
|
|
133
|
+
createUser({ wallet, name, referral }: CreateUserArgs, options?: RpcOptions): Promise<string>;
|
|
134
|
+
p: any;
|
|
135
|
+
}
|
package/dist/stake.js
ADDED
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
13
|
+
const helpers_1 = require("./utils/helpers");
|
|
14
|
+
const constants_1 = require("./utils/constants");
|
|
15
|
+
class Stake {
|
|
16
|
+
constructor(program, provider) {
|
|
17
|
+
this.provider = provider;
|
|
18
|
+
this.program = program;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get all Stake Vaults
|
|
22
|
+
*/
|
|
23
|
+
getStakeVaults() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const response = yield this.program.account.stakeVault.all();
|
|
26
|
+
return response.map((stakeVault) => (0, helpers_1.formatStakeVault)(stakeVault.account));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get all Users
|
|
31
|
+
*/
|
|
32
|
+
getUsers() {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const response = yield this.program.account.user.all();
|
|
35
|
+
return response.map((item) => (0, helpers_1.formatUser)(item.account));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get Stake Vault by name
|
|
40
|
+
* @param stakeVault - Stake Vault name
|
|
41
|
+
*/
|
|
42
|
+
getStakeVaultByName(stakeVault) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
45
|
+
return (0, helpers_1.formatStakeVault)(yield this.program.account.stakeVault.fetch(StakeVault));
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get all stakes by vault
|
|
50
|
+
* @param stakeVault - Stake Vault name
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
getStakes(stakeVault) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
const response = yield this.program.account.stake.all();
|
|
56
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
57
|
+
return response
|
|
58
|
+
.filter((item) => item.account.stakeVault.toBase58() === StakeVault.toBase58())
|
|
59
|
+
.map((stake) => (0, helpers_1.formatStake)(stake.account));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get Stake by wallet
|
|
64
|
+
* @param wallet - User wallet
|
|
65
|
+
* @param stakeVault - Stake Vault name
|
|
66
|
+
*
|
|
67
|
+
*/
|
|
68
|
+
getStakeByWallet(wallet, stakeVault) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const response = yield this.getStakes(stakeVault);
|
|
71
|
+
const stakeVaultByName = yield this.getStakeVaultByName(stakeVault);
|
|
72
|
+
const myStakes = response.filter((item) => item.authority === wallet.toBase58());
|
|
73
|
+
for (const stake of myStakes) {
|
|
74
|
+
try {
|
|
75
|
+
const stakeRewards = yield this.program.account.nftRewards.fetch(new web3_js_1.PublicKey(stake.stakeRewards));
|
|
76
|
+
let start = stakeVaultByName.week * 7;
|
|
77
|
+
let end = stakeVaultByName.week == 4 ? 30 : start + 7;
|
|
78
|
+
stake.apr = stakeRewards.apr;
|
|
79
|
+
stake.dailyRewards = stakeRewards.dailyRewards.map((reward) => reward.toNumber() / Math.pow(10, constants_1.TTRIAD_DECIMALS));
|
|
80
|
+
stake.weeklyRewardsPaid = stakeRewards.weeklyRewardsPaid;
|
|
81
|
+
let rewards = stake.dailyRewards
|
|
82
|
+
.slice(start, end)
|
|
83
|
+
.reduce((a, b) => a + b, 0);
|
|
84
|
+
let allRewards = stake.dailyRewards.reduce((a, b) => a + b);
|
|
85
|
+
stake.rewardsToClaim = 0;
|
|
86
|
+
let index = 0;
|
|
87
|
+
let week = 0;
|
|
88
|
+
let limit = 7;
|
|
89
|
+
for (const item of stake.dailyRewards) {
|
|
90
|
+
if (!stake.weeklyRewardsPaid[week]) {
|
|
91
|
+
stake.rewardsToClaim += item;
|
|
92
|
+
}
|
|
93
|
+
if (index === limit) {
|
|
94
|
+
limit += 6;
|
|
95
|
+
week += 1;
|
|
96
|
+
}
|
|
97
|
+
index++;
|
|
98
|
+
}
|
|
99
|
+
stake.weeklyRewards = rewards;
|
|
100
|
+
stake.allRewards = allRewards;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.log(error);
|
|
104
|
+
stake.apr = 0;
|
|
105
|
+
stake.dailyRewards = [];
|
|
106
|
+
stake.weeklyRewardsPaid = [];
|
|
107
|
+
stake.weeklyRewards = 0;
|
|
108
|
+
stake.rewardsToClaim = 0;
|
|
109
|
+
stake.allRewards = 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return myStakes;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get Stake Vault Rewards details
|
|
117
|
+
* @param stakeVault - Stake Vault name
|
|
118
|
+
*/
|
|
119
|
+
getStakeVaultRewards(stakeVault) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
122
|
+
const response = yield this.program.account.stakeVault.fetch(StakeVault);
|
|
123
|
+
const amount = response.amount.toNumber() / Math.pow(10, constants_1.TTRIAD_DECIMALS);
|
|
124
|
+
const period = (response.endTs.toNumber() - response.initTs.toNumber()) / (60 * 60 * 24);
|
|
125
|
+
const netAmount = amount - (amount * constants_1.TTRIAD_FEE) / 100;
|
|
126
|
+
const data = {
|
|
127
|
+
amount: netAmount,
|
|
128
|
+
perDay: netAmount / period,
|
|
129
|
+
perWeek: (netAmount / period) * 7,
|
|
130
|
+
perMonth: (netAmount / period) * 30,
|
|
131
|
+
period,
|
|
132
|
+
days: []
|
|
133
|
+
};
|
|
134
|
+
for (let ts = response.initTs.toNumber(); ts <= response.endTs.toNumber(); ts += 60 * 60 * 24) {
|
|
135
|
+
data.days.push(ts);
|
|
136
|
+
}
|
|
137
|
+
return data;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get Stakes by day
|
|
142
|
+
* @param stakeVault - Stake Vault name
|
|
143
|
+
* @param day - Day timestamp
|
|
144
|
+
*/
|
|
145
|
+
getStakesByDay(stakeVault, day) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
const stakes = yield this.getStakes(stakeVault);
|
|
148
|
+
const rewards = [];
|
|
149
|
+
stakes.forEach((stake) => {
|
|
150
|
+
const date = stake.initTs * 1000;
|
|
151
|
+
const stakeDay = day * 1000;
|
|
152
|
+
const currentDate = new Date().getTime();
|
|
153
|
+
if (date <= stakeDay && stakeDay <= currentDate) {
|
|
154
|
+
rewards.push(stake);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
return rewards;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Stake NFT
|
|
162
|
+
* @param name - NFT name
|
|
163
|
+
* @param wallet - User wallet
|
|
164
|
+
* @param mint - NFT mint
|
|
165
|
+
* @param collections - NFT collections
|
|
166
|
+
* @param rarity - NFT rarity
|
|
167
|
+
*
|
|
168
|
+
*/
|
|
169
|
+
stakeNft({ name, wallet, mint, collections, rarity, stakeVault }, options) {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
172
|
+
const FromAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
173
|
+
const ToAta = (0, helpers_1.getATASync)(StakeVault, mint);
|
|
174
|
+
let items = [];
|
|
175
|
+
Object.keys(collections).forEach((key) => {
|
|
176
|
+
if (collections[key]) {
|
|
177
|
+
items.push({ [key]: {} });
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
const method = this.program.methods
|
|
181
|
+
.stakeNft({
|
|
182
|
+
name,
|
|
183
|
+
collections: items,
|
|
184
|
+
rarity,
|
|
185
|
+
stakeVault
|
|
186
|
+
})
|
|
187
|
+
.accounts({
|
|
188
|
+
signer: wallet,
|
|
189
|
+
toAta: ToAta,
|
|
190
|
+
fromAta: FromAta,
|
|
191
|
+
mint: mint
|
|
192
|
+
});
|
|
193
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
194
|
+
method.postInstructions([
|
|
195
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
196
|
+
microLamports: options.microLamports
|
|
197
|
+
})
|
|
198
|
+
]);
|
|
199
|
+
}
|
|
200
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Initialize Stake Vault
|
|
205
|
+
* @param name - The ticker's name
|
|
206
|
+
* @param slots - Amount available to users joining the vault
|
|
207
|
+
* @param collection - The Collection name
|
|
208
|
+
*
|
|
209
|
+
*/
|
|
210
|
+
initializeStakeVault({ name, slots, collection, amount }, options) {
|
|
211
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
212
|
+
const method = this.program.methods
|
|
213
|
+
.initializeStakeVault({
|
|
214
|
+
name,
|
|
215
|
+
slots,
|
|
216
|
+
collection,
|
|
217
|
+
amount
|
|
218
|
+
})
|
|
219
|
+
.accounts({
|
|
220
|
+
signer: this.provider.wallet.publicKey
|
|
221
|
+
});
|
|
222
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
223
|
+
method.postInstructions([
|
|
224
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
225
|
+
microLamports: options.microLamports
|
|
226
|
+
})
|
|
227
|
+
]);
|
|
228
|
+
}
|
|
229
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Deposit Stake Rewards
|
|
234
|
+
* @param wallet - User wallet
|
|
235
|
+
* @param mint - NFT mint
|
|
236
|
+
* @param amount - Reward amount
|
|
237
|
+
*
|
|
238
|
+
*/
|
|
239
|
+
depositStakeRewards({ wallet, mint, amount, stakeVault }, options) {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
242
|
+
const ToAta = (0, helpers_1.getATASync)(StakeVault, mint);
|
|
243
|
+
const FromAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
244
|
+
const method = this.program.methods
|
|
245
|
+
.depositStakeRewards({
|
|
246
|
+
amount,
|
|
247
|
+
stakeVault
|
|
248
|
+
})
|
|
249
|
+
.accounts({
|
|
250
|
+
signer: wallet,
|
|
251
|
+
fromAta: FromAta,
|
|
252
|
+
toAta: ToAta,
|
|
253
|
+
mint: mint
|
|
254
|
+
});
|
|
255
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
256
|
+
method.postInstructions([
|
|
257
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
258
|
+
microLamports: options.microLamports
|
|
259
|
+
})
|
|
260
|
+
]);
|
|
261
|
+
}
|
|
262
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Request Withdraw
|
|
267
|
+
* @param wallet - User wallet
|
|
268
|
+
* @param nftName - NFT name
|
|
269
|
+
* @param stakeVault - Name of the stake vault
|
|
270
|
+
*
|
|
271
|
+
*/
|
|
272
|
+
requestWithdraw({ wallet, nftName, mint, stakeVault }, options) {
|
|
273
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
274
|
+
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
275
|
+
const stakePDA = (0, helpers_1.getStakeAddressSync)(this.program.programId, nftName);
|
|
276
|
+
const method = this.program.methods.requestWithdrawStake().accounts({
|
|
277
|
+
signer: wallet,
|
|
278
|
+
mint: mint,
|
|
279
|
+
stake: stakePDA,
|
|
280
|
+
stakeVault: stakeVaultPDA
|
|
281
|
+
});
|
|
282
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
283
|
+
method.postInstructions([
|
|
284
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
285
|
+
microLamports: options.microLamports
|
|
286
|
+
})
|
|
287
|
+
]);
|
|
288
|
+
}
|
|
289
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Withdraw Stake
|
|
294
|
+
* @param wallet - User wallet
|
|
295
|
+
* @param nftName - Stake name
|
|
296
|
+
* @param mint - NFT mint
|
|
297
|
+
* @param stakeVault - Name of the stake vault
|
|
298
|
+
*
|
|
299
|
+
*/
|
|
300
|
+
withdrawStake({ wallet, nftName, mint, stakeVault }, options) {
|
|
301
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
302
|
+
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
303
|
+
const FromAta = (0, helpers_1.getATASync)(stakeVaultPDA, mint);
|
|
304
|
+
const ToAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
305
|
+
const stakePDA = (0, helpers_1.getStakeAddressSync)(this.program.programId, nftName);
|
|
306
|
+
const NFTRewards = (0, helpers_1.getNFTRewardsAddressSync)(this.program.programId, stakePDA);
|
|
307
|
+
const method = this.program.methods.withdrawStake().accounts({
|
|
308
|
+
signer: wallet,
|
|
309
|
+
fromAta: FromAta,
|
|
310
|
+
nftRewards: NFTRewards,
|
|
311
|
+
stake: stakePDA,
|
|
312
|
+
toAta: ToAta,
|
|
313
|
+
stakeVault: stakeVaultPDA,
|
|
314
|
+
admin: new web3_js_1.PublicKey('82ppCojm3yrEKgdpH8B5AmBJTU1r1uAWXFWhxvPs9UCR'),
|
|
315
|
+
mint: mint
|
|
316
|
+
});
|
|
317
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
318
|
+
method.postInstructions([
|
|
319
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
320
|
+
microLamports: options.microLamports
|
|
321
|
+
})
|
|
322
|
+
]);
|
|
323
|
+
}
|
|
324
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Update Stake Vault Status
|
|
329
|
+
* @param wallet - User wallet
|
|
330
|
+
* @param stakeVault - Name of the stake vault
|
|
331
|
+
* @param isLocked - Status of the stake vault
|
|
332
|
+
* @param week - Current week rewards (Starts from 0)
|
|
333
|
+
*
|
|
334
|
+
*/
|
|
335
|
+
updateStakeVaultStatus({ wallet, isLocked, week, stakeVault }, options) {
|
|
336
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
337
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
338
|
+
const method = this.program.methods
|
|
339
|
+
.updateStakeVaultStatus({
|
|
340
|
+
isLocked,
|
|
341
|
+
week
|
|
342
|
+
})
|
|
343
|
+
.accounts({
|
|
344
|
+
signer: wallet,
|
|
345
|
+
stakeVault: StakeVault
|
|
346
|
+
});
|
|
347
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
348
|
+
method.postInstructions([
|
|
349
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
350
|
+
microLamports: options.microLamports
|
|
351
|
+
})
|
|
352
|
+
]);
|
|
353
|
+
}
|
|
354
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Update Stake Rewards
|
|
359
|
+
* @param wallet - User wallet
|
|
360
|
+
* @param nft_name - Name of the nft
|
|
361
|
+
* @param apr - APR based in the current day
|
|
362
|
+
* @param day - Day for update rewards (Starts from 0)
|
|
363
|
+
* @param rewards - Rewards for the day
|
|
364
|
+
*
|
|
365
|
+
*/
|
|
366
|
+
updateStakeRewards({ wallet, day, items }, options) {
|
|
367
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
368
|
+
const ixs = [
|
|
369
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
370
|
+
microLamports: options.microLamports
|
|
371
|
+
}),
|
|
372
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
|
|
373
|
+
units: 600000
|
|
374
|
+
})
|
|
375
|
+
];
|
|
376
|
+
for (const item of items) {
|
|
377
|
+
const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, item.nftName);
|
|
378
|
+
ixs.push(yield this.program.methods
|
|
379
|
+
.updateStakeRewards({
|
|
380
|
+
rewards: item.rewards,
|
|
381
|
+
apr: item.apr,
|
|
382
|
+
day
|
|
383
|
+
})
|
|
384
|
+
.accounts({
|
|
385
|
+
signer: wallet,
|
|
386
|
+
stake: Stake
|
|
387
|
+
})
|
|
388
|
+
.instruction());
|
|
389
|
+
}
|
|
390
|
+
const { blockhash } = yield this.provider.connection.getLatestBlockhash();
|
|
391
|
+
const messageV0 = new web3_js_1.TransactionMessage({
|
|
392
|
+
instructions: ixs,
|
|
393
|
+
recentBlockhash: blockhash,
|
|
394
|
+
payerKey: wallet
|
|
395
|
+
}).compileToV0Message();
|
|
396
|
+
const tx = new web3_js_1.VersionedTransaction(messageV0);
|
|
397
|
+
return this.provider.sendAndConfirm(tx, [], {
|
|
398
|
+
skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight,
|
|
399
|
+
commitment: 'confirmed'
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Claim Stake Rewards
|
|
405
|
+
* @param wallet - User wallet
|
|
406
|
+
* @param mint - NFT mint
|
|
407
|
+
* @param week - Week rewards
|
|
408
|
+
* @param stakeVault - Name of the stake vault
|
|
409
|
+
* @param nftName - Name of the nft
|
|
410
|
+
*
|
|
411
|
+
*/
|
|
412
|
+
claimStakeRewards({ wallet, mint, week, stakeVault, nftName }, options) {
|
|
413
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
414
|
+
const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
|
|
415
|
+
const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, nftName);
|
|
416
|
+
const NFTRewards = (0, helpers_1.getNFTRewardsAddressSync)(this.program.programId, Stake);
|
|
417
|
+
const ToATA = (0, helpers_1.getATASync)(wallet, mint);
|
|
418
|
+
const FromAta = (0, helpers_1.getATASync)(StakeVault, mint);
|
|
419
|
+
let ixs = [];
|
|
420
|
+
for (let w of week) {
|
|
421
|
+
ixs.push(yield this.program.methods
|
|
422
|
+
.claimStakeRewards({
|
|
423
|
+
week: w
|
|
424
|
+
})
|
|
425
|
+
.accounts({
|
|
426
|
+
signer: wallet,
|
|
427
|
+
fromAta: FromAta,
|
|
428
|
+
toAta: ToATA,
|
|
429
|
+
mint: mint,
|
|
430
|
+
nftRewards: NFTRewards,
|
|
431
|
+
stake: Stake,
|
|
432
|
+
stakeVault: StakeVault
|
|
433
|
+
})
|
|
434
|
+
.instruction());
|
|
435
|
+
}
|
|
436
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
437
|
+
ixs.push(web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
438
|
+
microLamports: options.microLamports
|
|
439
|
+
}));
|
|
440
|
+
}
|
|
441
|
+
const { blockhash } = yield this.provider.connection.getLatestBlockhash();
|
|
442
|
+
const messageV0 = new web3_js_1.TransactionMessage({
|
|
443
|
+
payerKey: wallet,
|
|
444
|
+
recentBlockhash: blockhash,
|
|
445
|
+
instructions: ixs
|
|
446
|
+
}).compileToV0Message();
|
|
447
|
+
const tx = new web3_js_1.VersionedTransaction(messageV0);
|
|
448
|
+
return this.provider.sendAndConfirm(tx, [], {
|
|
449
|
+
skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight,
|
|
450
|
+
commitment: 'confirmed'
|
|
451
|
+
});
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Create User
|
|
456
|
+
* @param wallet - User wallet
|
|
457
|
+
* @param name - user name
|
|
458
|
+
* @param referral - user referral
|
|
459
|
+
*
|
|
460
|
+
*/
|
|
461
|
+
createUser({ wallet, name, referral }, options) {
|
|
462
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
463
|
+
const referralPDA = (0, helpers_1.getUserAddressSync)(this.program.programId, referral);
|
|
464
|
+
const method = this.program.methods
|
|
465
|
+
.createUser({
|
|
466
|
+
name
|
|
467
|
+
})
|
|
468
|
+
.accounts({
|
|
469
|
+
signer: wallet,
|
|
470
|
+
referral: referralPDA
|
|
471
|
+
});
|
|
472
|
+
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
473
|
+
method.postInstructions([
|
|
474
|
+
web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
|
|
475
|
+
microLamports: options.microLamports
|
|
476
|
+
})
|
|
477
|
+
]);
|
|
478
|
+
}
|
|
479
|
+
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
exports.default = Stake;
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|