@triadxyz/triad-protocol 0.3.9-beta → 0.4.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/stake.d.ts CHANGED
@@ -3,7 +3,7 @@ import { AnchorProvider, Program } from '@coral-xyz/anchor';
3
3
  import { PublicKey } from '@solana/web3.js';
4
4
  import { TriadProtocol } from './types/triad_protocol';
5
5
  import { RpcOptions } from './types';
6
- import { DepositStakeRewardsArgs, InitializeStakeArgs, StakeNftArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, UpdateStakeVaultStatusArgs, ClaimStakeRewardsArgs, StakeTokenArgs } from './types/stake';
6
+ import { DepositStakeRewardsArgs, InitializeStakeArgs, StakeNftArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, UpdateStakeVaultStatusArgs, ClaimStakeRewardsArgs, StakeTokenArgs, UpdateBoostArgs } from './types/stake';
7
7
  export default class Stake {
8
8
  program: Program<TriadProtocol>;
9
9
  provider: AnchorProvider;
@@ -38,19 +38,7 @@ export default class Stake {
38
38
  onchainId: string;
39
39
  name: string;
40
40
  rarityRankHrtt: number;
41
- }[]): Promise<{
42
- available: number;
43
- name: string;
44
- stakeVault: string;
45
- authority: string;
46
- initTs: number;
47
- withdrawTs: number;
48
- mint: string;
49
- claimedTs: number;
50
- boost: boolean;
51
- claimed: number;
52
- amount: number;
53
- }[]>;
41
+ }[]): Promise<StakeResponse[]>;
54
42
  /**
55
43
  * Get Stakes by day
56
44
  * @param stakeVault - Stake Vault name
@@ -115,7 +103,7 @@ export default class Stake {
115
103
  * @param week - Current week rewards (Starts from 0)
116
104
  *
117
105
  */
118
- updateStakeVaultStatus({ wallet, isLocked, stakeVault, initTs }: UpdateStakeVaultStatusArgs, options?: RpcOptions): Promise<string>;
106
+ updateStakeVaultStatus({ wallet, isLocked, stakeVault }: UpdateStakeVaultStatusArgs, options?: RpcOptions): Promise<string>;
119
107
  /**
120
108
  * Claim Stake Rewards
121
109
  * @param wallet - User wallet
@@ -125,4 +113,12 @@ export default class Stake {
125
113
  *
126
114
  */
127
115
  claimStakeRewards({ wallet, stakeVault, nftName, collections, rank }: ClaimStakeRewardsArgs, options?: RpcOptions): Promise<import("@solana/web3.js").Transaction>;
116
+ /**
117
+ * Update Stake Boost
118
+ * @param wallet - User wallet
119
+ * @param nftName - Name of the nft
120
+ * @param boost - Boost value
121
+ *
122
+ */
123
+ updateBoost({ wallet, nfts, boost }: UpdateBoostArgs, options?: RpcOptions): Promise<string>;
128
124
  }
package/dist/stake.js CHANGED
@@ -92,24 +92,25 @@ class Stake {
92
92
  getStakeByWallet(wallet, stakeVault, collections, ranks) {
93
93
  return __awaiter(this, void 0, void 0, function* () {
94
94
  const response = yield this.getStakes(stakeVault);
95
- const stakePromises = response
96
- .filter((item) => item.authority === wallet.toBase58())
97
- .map((nft) => __awaiter(this, void 0, void 0, function* () {
98
- const getRank = (0, getRarity_1.getRarityRank)(ranks, nft.mint, nft.name);
95
+ const data = [];
96
+ for (const stake of response) {
97
+ const getRank = (0, getRarity_1.getRarityRank)(ranks, stake.mint, stake.name);
99
98
  let available = 0;
100
99
  try {
101
100
  available = yield this.getStakeRewards({
102
101
  wallet,
103
- nftName: nft.name,
102
+ nftName: stake.name,
104
103
  stakeVault,
105
104
  rank: getRank,
106
105
  collections
107
106
  });
108
107
  }
109
- catch (error) { }
110
- return Object.assign(Object.assign({}, nft), { available });
111
- }));
112
- return Promise.all(stakePromises);
108
+ catch (error) {
109
+ console.log(error);
110
+ }
111
+ data.push(Object.assign(Object.assign({}, stake), { available }));
112
+ }
113
+ return data;
113
114
  });
114
115
  }
115
116
  /**
@@ -254,7 +255,9 @@ class Stake {
254
255
  */
255
256
  depositStakeRewards({ wallet, mint, amount, stakeVault }, options) {
256
257
  return __awaiter(this, void 0, void 0, function* () {
258
+ const StakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
257
259
  const FromAta = (0, helpers_1.getATASync)(wallet, mint);
260
+ const ToAta = (0, helpers_1.getATASync)(StakeVaultPDA, mint);
258
261
  const method = this.program.methods
259
262
  .depositStakeRewards({
260
263
  amount,
@@ -263,7 +266,8 @@ class Stake {
263
266
  .accounts({
264
267
  signer: wallet,
265
268
  fromAta: FromAta,
266
- mint: mint
269
+ mint: mint,
270
+ toAta: ToAta
267
271
  });
268
272
  if (options === null || options === void 0 ? void 0 : options.microLamports) {
269
273
  method.postInstructions([
@@ -347,15 +351,11 @@ class Stake {
347
351
  * @param week - Current week rewards (Starts from 0)
348
352
  *
349
353
  */
350
- updateStakeVaultStatus({ wallet, isLocked, stakeVault, initTs }, options) {
354
+ updateStakeVaultStatus({ wallet, isLocked, stakeVault }, options) {
351
355
  return __awaiter(this, void 0, void 0, function* () {
352
356
  const StakeVault = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, stakeVault);
353
357
  const method = this.program.methods
354
- .updateStakeVaultStatus({
355
- isLocked,
356
- initTs: new anchor_1.BN(initTs),
357
- slots: new anchor_1.BN(1839)
358
- })
358
+ .updateStakeVaultStatus(isLocked)
359
359
  .accounts({
360
360
  signer: wallet,
361
361
  stakeVault: StakeVault
@@ -409,5 +409,43 @@ class Stake {
409
409
  return method.transaction();
410
410
  });
411
411
  }
412
+ /**
413
+ * Update Stake Boost
414
+ * @param wallet - User wallet
415
+ * @param nftName - Name of the nft
416
+ * @param boost - Boost value
417
+ *
418
+ */
419
+ updateBoost({ wallet, nfts, boost }, options) {
420
+ return __awaiter(this, void 0, void 0, function* () {
421
+ const ixs = [];
422
+ for (const nft of nfts) {
423
+ const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, new web3_js_1.PublicKey(nft.wallet), nft.name);
424
+ ixs.push(yield this.program.methods
425
+ .updateStakeBoost(boost)
426
+ .accounts({
427
+ signer: wallet,
428
+ stake: Stake
429
+ })
430
+ .instruction());
431
+ }
432
+ if (options === null || options === void 0 ? void 0 : options.microLamports) {
433
+ ixs.push(web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
434
+ microLamports: options.microLamports
435
+ }));
436
+ }
437
+ const { blockhash } = yield this.provider.connection.getLatestBlockhash();
438
+ const messageV0 = new web3_js_1.TransactionMessage({
439
+ instructions: ixs,
440
+ recentBlockhash: blockhash,
441
+ payerKey: wallet
442
+ }).compileToV0Message();
443
+ const tx = new web3_js_1.VersionedTransaction(messageV0);
444
+ return this.provider.sendAndConfirm(tx, [], {
445
+ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight,
446
+ commitment: 'confirmed'
447
+ });
448
+ });
449
+ }
412
450
  }
413
451
  exports.default = Stake;
package/dist/test.js CHANGED
@@ -19,6 +19,7 @@ const anchor_1 = require("@coral-xyz/anchor");
19
19
  const constants_1 = require("./utils/constants");
20
20
  const rarity_json_1 = __importDefault(require("./utils/stake-season-1/rarity.json"));
21
21
  const getRarity_1 = require("./utils/getRarity");
22
+ const axios_1 = __importDefault(require("axios"));
22
23
  const file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/id.json');
23
24
  const rpc_file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/rpc.txt');
24
25
  const keypair = web3_js_1.Keypair.fromSecretKey(new Uint8Array(JSON.parse(file.toString())));
@@ -49,4 +50,38 @@ const getStake = () => __awaiter(void 0, void 0, void 0, function* () {
49
50
  console.log(items);
50
51
  console.log(response.length);
51
52
  });
52
- getStake();
53
+ const deposit = () => __awaiter(void 0, void 0, void 0, function* () {
54
+ const response = yield triadProtocol.stake.depositStakeRewards({
55
+ wallet: wallet.publicKey,
56
+ stakeVault: constants_1.STAKE_SEASON,
57
+ mint: new web3_js_1.PublicKey(constants_1.TTRIAD_MINT),
58
+ amount: new anchor_1.BN(192388 * Math.pow(10, 6))
59
+ });
60
+ console.log(response);
61
+ });
62
+ const getStakeVault = () => __awaiter(void 0, void 0, void 0, function* () {
63
+ const response = yield triadProtocol.stake.getStakeVaultByName(constants_1.STAKE_SEASON);
64
+ console.log(response);
65
+ });
66
+ const getStakeaa = () => __awaiter(void 0, void 0, void 0, function* () {
67
+ const response = yield triadProtocol.stake.getStakeByWallet(new web3_js_1.PublicKey('HjJQdfTHgC3EBX3471w4st8BXbBmtbaMyCAXNgcUb7dq'), constants_1.STAKE_SEASON, 1, rarity_json_1.default);
68
+ console.log(response);
69
+ });
70
+ const updateBoost = () => __awaiter(void 0, void 0, void 0, function* () {
71
+ const response = (yield axios_1.default.get('https://api.triadfi.co/boost'))
72
+ .data;
73
+ const stakes = yield triadProtocol.stake.getStakes(constants_1.STAKE_SEASON);
74
+ const update = [];
75
+ for (const stake of stakes) {
76
+ if (response.includes(stake.mint) && !stake.boost) {
77
+ update.push({ name: stake.name, wallet: stake.authority });
78
+ }
79
+ }
80
+ const updateBoost = yield triadProtocol.stake.updateBoost({
81
+ wallet: wallet.publicKey,
82
+ stakeVault: constants_1.STAKE_SEASON,
83
+ nfts: update,
84
+ boost: true
85
+ });
86
+ console.log(updateBoost);
87
+ });
@@ -801,6 +801,31 @@
801
801
  ],
802
802
  "args": []
803
803
  },
804
+ {
805
+ "name": "update_stake_boost",
806
+ "discriminator": [239, 85, 19, 140, 235, 236, 88, 70],
807
+ "accounts": [
808
+ {
809
+ "name": "signer",
810
+ "writable": true,
811
+ "signer": true
812
+ },
813
+ {
814
+ "name": "stake",
815
+ "writable": true
816
+ },
817
+ {
818
+ "name": "system_program",
819
+ "address": "11111111111111111111111111111111"
820
+ }
821
+ ],
822
+ "args": [
823
+ {
824
+ "name": "boost",
825
+ "type": "bool"
826
+ }
827
+ ]
828
+ },
804
829
  {
805
830
  "name": "update_stake_vault_status",
806
831
  "discriminator": [71, 64, 188, 150, 86, 254, 221, 65],
@@ -821,12 +846,8 @@
821
846
  ],
822
847
  "args": [
823
848
  {
824
- "name": "args",
825
- "type": {
826
- "defined": {
827
- "name": "UpdateStakeVaultStatusArgs"
828
- }
829
- }
849
+ "name": "is_locked",
850
+ "type": "bool"
830
851
  }
831
852
  ]
832
853
  },
@@ -1095,6 +1116,11 @@
1095
1116
  "code": 6022,
1096
1117
  "name": "InsufficientFunds",
1097
1118
  "msg": "Insufficient funds"
1119
+ },
1120
+ {
1121
+ "code": 6023,
1122
+ "name": "NoRewardsAvailable",
1123
+ "msg": "No rewards available"
1098
1124
  }
1099
1125
  ],
1100
1126
  "types": [
@@ -1540,26 +1566,6 @@
1540
1566
  ]
1541
1567
  }
1542
1568
  },
1543
- {
1544
- "name": "UpdateStakeVaultStatusArgs",
1545
- "type": {
1546
- "kind": "struct",
1547
- "fields": [
1548
- {
1549
- "name": "is_locked",
1550
- "type": "bool"
1551
- },
1552
- {
1553
- "name": "init_ts",
1554
- "type": "i64"
1555
- },
1556
- {
1557
- "name": "slots",
1558
- "type": "u64"
1559
- }
1560
- ]
1561
- }
1562
- },
1563
1569
  {
1564
1570
  "name": "UpdateTickerPriceArgs",
1565
1571
  "type": {
@@ -51,7 +51,6 @@ export type UpdateStakeVaultStatusArgs = {
51
51
  wallet: PublicKey;
52
52
  isLocked: boolean;
53
53
  stakeVault: string;
54
- initTs: number;
55
54
  };
56
55
  export type ClaimStakeRewardsArgs = {
57
56
  wallet: PublicKey;
@@ -60,6 +59,15 @@ export type ClaimStakeRewardsArgs = {
60
59
  collections: number;
61
60
  rank: number;
62
61
  };
62
+ export type UpdateBoostArgs = {
63
+ wallet: PublicKey;
64
+ stakeVault: string;
65
+ nfts: {
66
+ name: string;
67
+ wallet: string;
68
+ }[];
69
+ boost: boolean;
70
+ };
63
71
  export type UpdateStakeRewardsArgs = {
64
72
  day: number;
65
73
  wallet: PublicKey;
@@ -741,6 +741,31 @@ export type TriadProtocol = {
741
741
  ];
742
742
  args: [];
743
743
  },
744
+ {
745
+ name: 'updateStakeBoost';
746
+ discriminator: [239, 85, 19, 140, 235, 236, 88, 70];
747
+ accounts: [
748
+ {
749
+ name: 'signer';
750
+ writable: true;
751
+ signer: true;
752
+ },
753
+ {
754
+ name: 'stake';
755
+ writable: true;
756
+ },
757
+ {
758
+ name: 'systemProgram';
759
+ address: '11111111111111111111111111111111';
760
+ }
761
+ ];
762
+ args: [
763
+ {
764
+ name: 'boost';
765
+ type: 'bool';
766
+ }
767
+ ];
768
+ },
744
769
  {
745
770
  name: 'updateStakeVaultStatus';
746
771
  discriminator: [71, 64, 188, 150, 86, 254, 221, 65];
@@ -761,12 +786,8 @@ export type TriadProtocol = {
761
786
  ];
762
787
  args: [
763
788
  {
764
- name: 'args';
765
- type: {
766
- defined: {
767
- name: 'updateStakeVaultStatusArgs';
768
- };
769
- };
789
+ name: 'isLocked';
790
+ type: 'bool';
770
791
  }
771
792
  ];
772
793
  },
@@ -1007,6 +1028,11 @@ export type TriadProtocol = {
1007
1028
  code: 6022;
1008
1029
  name: 'insufficientFunds';
1009
1030
  msg: 'Insufficient funds';
1031
+ },
1032
+ {
1033
+ code: 6023;
1034
+ name: 'noRewardsAvailable';
1035
+ msg: 'No rewards available';
1010
1036
  }
1011
1037
  ];
1012
1038
  types: [
@@ -1452,26 +1478,6 @@ export type TriadProtocol = {
1452
1478
  ];
1453
1479
  };
1454
1480
  },
1455
- {
1456
- name: 'updateStakeVaultStatusArgs';
1457
- type: {
1458
- kind: 'struct';
1459
- fields: [
1460
- {
1461
- name: 'isLocked';
1462
- type: 'bool';
1463
- },
1464
- {
1465
- name: 'initTs';
1466
- type: 'i64';
1467
- },
1468
- {
1469
- name: 'slots';
1470
- type: 'u64';
1471
- }
1472
- ];
1473
- };
1474
- },
1475
1481
  {
1476
1482
  name: 'updateTickerPriceArgs';
1477
1483
  type: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@triadxyz/triad-protocol",
3
- "version": "0.3.9-beta",
3
+ "version": "0.4.1-beta",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",