@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 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 triad_protocol_1 = require("./types/triad_protocol");
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(triad_protocol_1.IDL, constants_1.TRIAD_PROTOCOL_PROGRAM_ID, this.provider);
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;
@@ -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 {};