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