@triadxyz/triad-protocol 0.5.3-beta.devnet → 0.5.5-beta.devnet
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 +7 -9
- package/dist/index.js +58 -40
- package/dist/{test.js → local-test.js} +47 -9
- package/dist/stake.d.ts +19 -18
- package/dist/stake.js +59 -96
- package/dist/trade.d.ts +32 -0
- package/dist/trade.js +138 -0
- package/dist/types/idl_triad_protocol.json +385 -295
- package/dist/types/index.d.ts +1 -14
- package/dist/types/stake.d.ts +3 -7
- package/dist/types/trade.d.ts +44 -0
- package/dist/types/trade.js +2 -0
- package/dist/types/triad_protocol.d.ts +961 -399
- package/dist/utils/constants.d.ts +6 -3
- package/dist/utils/constants.js +7 -4
- package/dist/utils/helpers.d.ts +3 -4
- package/dist/utils/helpers.js +16 -51
- package/package.json +2 -3
- package/dist/ticker.d.ts +0 -33
- package/dist/ticker.js +0 -43
- package/dist/vault.d.ts +0 -48
- package/dist/vault.js +0 -44
- /package/dist/{test.d.ts → local-test.d.ts} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,37 +1,35 @@
|
|
|
1
1
|
import { AnchorProvider, Program, Wallet } from '@coral-xyz/anchor';
|
|
2
2
|
import { Connection, PublicKey } from '@solana/web3.js';
|
|
3
3
|
import { TriadProtocol } from './types/triad_protocol';
|
|
4
|
-
import
|
|
5
|
-
import Vault from './vault';
|
|
4
|
+
import Trade from './trade';
|
|
6
5
|
import Stake from './stake';
|
|
7
6
|
import { CreateUserArgs, RpcOptions } from './types';
|
|
8
7
|
export default class TriadProtocolClient {
|
|
9
8
|
program: Program<TriadProtocol>;
|
|
10
9
|
provider: AnchorProvider;
|
|
11
|
-
|
|
12
|
-
vault: Vault;
|
|
10
|
+
trade: Trade;
|
|
13
11
|
stake: Stake;
|
|
14
12
|
constructor(connection: Connection, wallet: Wallet);
|
|
15
13
|
/**
|
|
16
14
|
* Get User by wallet
|
|
17
15
|
* @param wallet - User wallet
|
|
18
16
|
*/
|
|
19
|
-
getUser
|
|
17
|
+
getUser(wallet: PublicKey): Promise<import("./types/stake").UserResponse>;
|
|
20
18
|
/**
|
|
21
19
|
* Get User by wallet
|
|
22
20
|
* @param wallet - User wallet
|
|
23
21
|
*/
|
|
24
|
-
getUsers
|
|
22
|
+
getUsers(): Promise<import("./types/stake").UserResponse[]>;
|
|
25
23
|
/**
|
|
26
24
|
* Check if user exists
|
|
27
25
|
* @param username - User name
|
|
28
26
|
*/
|
|
29
|
-
hasUser
|
|
27
|
+
hasUser(wallet: PublicKey): Promise<boolean>;
|
|
30
28
|
/**
|
|
31
29
|
* Get Refferal
|
|
32
30
|
* @param name - User name
|
|
33
31
|
*/
|
|
34
|
-
|
|
32
|
+
getReferral(name: string): Promise<string>;
|
|
35
33
|
/**
|
|
36
34
|
* Create User
|
|
37
35
|
* @param wallet - User wallet
|
|
@@ -39,5 +37,5 @@ export default class TriadProtocolClient {
|
|
|
39
37
|
* @param referral - user referral
|
|
40
38
|
*
|
|
41
39
|
*/
|
|
42
|
-
createUser
|
|
40
|
+
createUser({ wallet, name, referral }: CreateUserArgs, options?: RpcOptions): Promise<string>;
|
|
43
41
|
}
|
package/dist/index.js
CHANGED
|
@@ -15,36 +15,45 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
16
16
|
const web3_js_1 = require("@solana/web3.js");
|
|
17
17
|
const idl_triad_protocol_json_1 = __importDefault(require("./types/idl_triad_protocol.json"));
|
|
18
|
-
const
|
|
19
|
-
const vault_1 = __importDefault(require("./vault"));
|
|
18
|
+
const trade_1 = __importDefault(require("./trade"));
|
|
20
19
|
const helpers_1 = require("./utils/helpers");
|
|
21
20
|
const stake_1 = __importDefault(require("./stake"));
|
|
22
21
|
class TriadProtocolClient {
|
|
23
22
|
constructor(connection, wallet) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
this.provider = new anchor_1.AnchorProvider(connection, wallet, anchor_1.AnchorProvider.defaultOptions());
|
|
24
|
+
this.program = new anchor_1.Program(idl_triad_protocol_json_1.default, this.provider);
|
|
25
|
+
this.trade = new trade_1.default(this.program, this.provider);
|
|
26
|
+
this.stake = new stake_1.default(this.program, this.provider);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get User by wallet
|
|
30
|
+
* @param wallet - User wallet
|
|
31
|
+
*/
|
|
32
|
+
getUser(wallet) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
34
|
const UserPDA = (0, helpers_1.getUserAddressSync)(this.program.programId, wallet);
|
|
30
35
|
const response = yield this.program.account.user.fetch(UserPDA);
|
|
31
36
|
return (0, helpers_1.formatUser)(response);
|
|
32
37
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get User by wallet
|
|
41
|
+
* @param wallet - User wallet
|
|
42
|
+
*/
|
|
43
|
+
getUsers() {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
45
|
const response = yield this.program.account.user.all();
|
|
39
46
|
return response
|
|
40
47
|
.map((item) => (0, helpers_1.formatUser)(item.account))
|
|
41
48
|
.sort((a, b) => b.referred - a.referred);
|
|
42
49
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if user exists
|
|
53
|
+
* @param username - User name
|
|
54
|
+
*/
|
|
55
|
+
hasUser(wallet) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
57
|
try {
|
|
49
58
|
yield this.program.account.user.fetch((0, helpers_1.getUserAddressSync)(this.program.programId, wallet));
|
|
50
59
|
return true;
|
|
@@ -53,28 +62,42 @@ class TriadProtocolClient {
|
|
|
53
62
|
return false;
|
|
54
63
|
}
|
|
55
64
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get Refferal
|
|
68
|
+
* @param name - User name
|
|
69
|
+
*/
|
|
70
|
+
getReferral(name) {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
72
|
try {
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
73
|
+
const users = yield this.program.account.user.all([
|
|
74
|
+
{
|
|
75
|
+
memcmp: {
|
|
76
|
+
offset: 8,
|
|
77
|
+
bytes: Buffer.from(name).toString('base64')
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]);
|
|
81
|
+
if (users.length > 0) {
|
|
82
|
+
return users[0].publicKey.toString();
|
|
83
|
+
}
|
|
84
|
+
return '';
|
|
65
85
|
}
|
|
66
|
-
catch (
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error('Error fetching referral:', error);
|
|
67
88
|
return '';
|
|
68
89
|
}
|
|
69
90
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create User
|
|
94
|
+
* @param wallet - User wallet
|
|
95
|
+
* @param name - user name
|
|
96
|
+
* @param referral - user referral
|
|
97
|
+
*
|
|
98
|
+
*/
|
|
99
|
+
createUser({ wallet, name, referral }, options) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
101
|
const method = this.program.methods
|
|
79
102
|
.createUser({
|
|
80
103
|
name
|
|
@@ -92,12 +115,7 @@ class TriadProtocolClient {
|
|
|
92
115
|
]);
|
|
93
116
|
}
|
|
94
117
|
return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
|
|
95
|
-
};
|
|
96
|
-
this.provider = new anchor_1.AnchorProvider(connection, wallet, anchor_1.AnchorProvider.defaultOptions());
|
|
97
|
-
this.program = new anchor_1.Program(idl_triad_protocol_json_1.default, this.provider);
|
|
98
|
-
this.ticker = new ticker_1.default(this.program, this.provider);
|
|
99
|
-
this.vault = new vault_1.default(this.program, this.provider);
|
|
100
|
-
this.stake = new stake_1.default(this.program, this.provider);
|
|
118
|
+
});
|
|
101
119
|
}
|
|
102
120
|
}
|
|
103
121
|
exports.default = TriadProtocolClient;
|
|
@@ -13,22 +13,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const fs_1 = __importDefault(require("fs"));
|
|
16
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
17
16
|
const index_1 = __importDefault(require("./index"));
|
|
18
17
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
19
|
-
const constants_1 = require("./utils/constants");
|
|
20
18
|
const axios_1 = __importDefault(require("axios"));
|
|
21
|
-
const
|
|
22
|
-
const
|
|
19
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
20
|
+
const file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/id.json');
|
|
21
|
+
const rpc_file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/rpc-devnet.txt');
|
|
23
22
|
const keypair = web3_js_1.Keypair.fromSecretKey(new Uint8Array(JSON.parse(file.toString())));
|
|
24
23
|
const connection = new web3_js_1.Connection(rpc_file.toString(), 'confirmed');
|
|
25
24
|
const wallet = new anchor_1.Wallet(keypair);
|
|
26
25
|
const triadProtocol = new index_1.default(connection, wallet);
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
const markets = [
|
|
27
|
+
{ name: 'JUPITER/TRD', marketId: 0 },
|
|
28
|
+
{ name: 'DRIFT/TRD', marketId: 1 },
|
|
29
|
+
{ name: 'PYTH/TRD', marketId: 2 },
|
|
30
|
+
{ name: 'UNDEAD/TRD', marketId: 3 },
|
|
31
|
+
{ name: 'MADLADS/TRD', marketId: 4 },
|
|
32
|
+
{ name: 'DEGODS/TRD', marketId: 5 },
|
|
33
|
+
{ name: 'ISLANDDAO/TRD', marketId: 6 },
|
|
34
|
+
{ name: 'COLOSSEUM/TRD', marketId: 7 }
|
|
35
|
+
];
|
|
36
|
+
const updateStakeVault = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const response = yield triadProtocol.stake.updateStakeVault({
|
|
38
|
+
wallet: wallet.publicKey
|
|
32
39
|
});
|
|
33
40
|
console.log(response);
|
|
34
41
|
});
|
|
@@ -51,3 +58,34 @@ const updateBoost = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
51
58
|
});
|
|
52
59
|
console.log(updateBoostResponse);
|
|
53
60
|
});
|
|
61
|
+
const getMarkets = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
const response = yield triadProtocol.trade.getMarkets();
|
|
63
|
+
console.log(response);
|
|
64
|
+
});
|
|
65
|
+
const initializeAllMarkets = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
for (const market of markets) {
|
|
67
|
+
try {
|
|
68
|
+
const response = yield triadProtocol.trade.initializeMarket(market, {
|
|
69
|
+
skipPreflight: true
|
|
70
|
+
});
|
|
71
|
+
console.log(`Initialized market ${market.name}:`, response);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error(`Error initializing market ${market.name}:`, error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
const openOrder = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
+
const response = yield triadProtocol.trade.openOrder(0, {
|
|
80
|
+
amount: 100,
|
|
81
|
+
direction: {
|
|
82
|
+
hype: {}
|
|
83
|
+
},
|
|
84
|
+
orderType: {
|
|
85
|
+
market: {}
|
|
86
|
+
},
|
|
87
|
+
comment: 'test'
|
|
88
|
+
});
|
|
89
|
+
console.log(response);
|
|
90
|
+
});
|
|
91
|
+
openOrder();
|
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 {
|
|
6
|
+
import { UpdateStakeVaultArgs, StakeNftArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, ClaimStakeRewardsArgs, StakeTokenArgs, UpdateBoostArgs } from './types/stake';
|
|
7
7
|
export default class Stake {
|
|
8
8
|
program: Program<TriadProtocol>;
|
|
9
9
|
provider: AnchorProvider;
|
|
@@ -17,23 +17,25 @@ export default class Stake {
|
|
|
17
17
|
* Get Stake Rewards
|
|
18
18
|
*/
|
|
19
19
|
getStakeRewards({ wallet, nftName, collections, rank }: ClaimStakeRewardsArgs): Promise<number>;
|
|
20
|
+
/**
|
|
21
|
+
* Get all Stakes
|
|
22
|
+
*/
|
|
20
23
|
getStakes(): Promise<StakeResponse[]>;
|
|
21
24
|
/**
|
|
22
|
-
* Get
|
|
25
|
+
* Get User Stakes
|
|
26
|
+
*/
|
|
27
|
+
getUserStakes(wallet: PublicKey): Promise<StakeResponse[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Get Stake By Wallet
|
|
23
30
|
* @param wallet - User wallet
|
|
24
31
|
* @param collections - NFT collections
|
|
25
|
-
*
|
|
32
|
+
* @param tensor rank
|
|
26
33
|
*/
|
|
27
34
|
getStakeByWallet(wallet: PublicKey, collections: number, ranks: {
|
|
28
35
|
onchainId: string;
|
|
29
36
|
name: string;
|
|
30
37
|
rarityRankHrtt: number;
|
|
31
38
|
}[]): Promise<StakeResponse[]>;
|
|
32
|
-
/**
|
|
33
|
-
* Get Stakes by day
|
|
34
|
-
* @param day - Day timestamp
|
|
35
|
-
*/
|
|
36
|
-
getStakesByDay(day: number): Promise<StakeResponse[]>;
|
|
37
39
|
/**
|
|
38
40
|
* Stake NFT
|
|
39
41
|
* @param mint - NFT mint
|
|
@@ -42,22 +44,21 @@ export default class Stake {
|
|
|
42
44
|
*/
|
|
43
45
|
stakeNft({ wallet, items }: StakeNftArgs, options?: RpcOptions): Promise<string>;
|
|
44
46
|
/**
|
|
45
|
-
* Stake
|
|
47
|
+
* Stake Token
|
|
48
|
+
* @param name - Index
|
|
46
49
|
* @param wallet - User wallet
|
|
47
|
-
* @param
|
|
48
|
-
* @param collections - NFT collections
|
|
49
|
-
* @param rarity - NFT rarity
|
|
50
|
+
* @param amount - Amount to stake
|
|
50
51
|
*
|
|
51
52
|
*/
|
|
52
53
|
stakeToken({ name, wallet, amount }: StakeTokenArgs, options?: RpcOptions): Promise<string>;
|
|
53
54
|
/**
|
|
54
|
-
*
|
|
55
|
+
* Update Stake Vault
|
|
55
56
|
* @param wallet - User wallet
|
|
56
|
-
* @param
|
|
57
|
-
* @param
|
|
57
|
+
* @param amount - Reward amount to deposit (optional)
|
|
58
|
+
* @param status - Status of the stake vault (optional)
|
|
58
59
|
*
|
|
59
60
|
*/
|
|
60
|
-
|
|
61
|
+
updateStakeVault({ wallet, amount, status }: UpdateStakeVaultArgs, options?: RpcOptions): Promise<string>;
|
|
61
62
|
/**
|
|
62
63
|
* Request Withdraw
|
|
63
64
|
* @param wallet - User wallet
|
|
@@ -82,9 +83,9 @@ export default class Stake {
|
|
|
82
83
|
*/
|
|
83
84
|
claimStakeRewards({ wallet, nftName, collections, rank }: ClaimStakeRewardsArgs, options?: RpcOptions): Promise<import("@solana/web3.js").Transaction>;
|
|
84
85
|
/**
|
|
85
|
-
* Update
|
|
86
|
+
* Update Boost
|
|
86
87
|
* @param wallet - User wallet
|
|
87
|
-
* @param
|
|
88
|
+
* @param nfts - Name of the nfts
|
|
88
89
|
*
|
|
89
90
|
*/
|
|
90
91
|
updateBoost({ wallet, nfts }: UpdateBoostArgs, options?: RpcOptions): Promise<string>;
|
package/dist/stake.js
CHANGED
|
@@ -35,11 +35,8 @@ class Stake {
|
|
|
35
35
|
*/
|
|
36
36
|
getStakeRewards({ wallet, nftName, collections, rank }) {
|
|
37
37
|
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, wallet, nftName);
|
|
41
|
-
const FromAta = (0, helpers_1.getATASync)(StakeVault, mint);
|
|
42
|
-
const ToAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
38
|
+
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
39
|
+
const stakePDA = (0, helpers_1.getStakeAddressSync)(this.program.programId, wallet, nftName);
|
|
43
40
|
const method = yield this.program.methods
|
|
44
41
|
.claimStakeRewards({
|
|
45
42
|
collections,
|
|
@@ -47,40 +44,55 @@ class Stake {
|
|
|
47
44
|
})
|
|
48
45
|
.accounts({
|
|
49
46
|
signer: wallet,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
stakeVault: StakeVault,
|
|
55
|
-
verifier: new web3_js_1.PublicKey(constants_1.VERIFIER)
|
|
47
|
+
mint: constants_1.TRD_MINT,
|
|
48
|
+
stake: stakePDA,
|
|
49
|
+
stakeVault: stakeVaultPDA,
|
|
50
|
+
verifier: constants_1.VERIFIER
|
|
56
51
|
})
|
|
57
52
|
.simulate();
|
|
58
53
|
let value = method.raw[method.raw.length - 2].split(' ')[3];
|
|
59
|
-
return new anchor_1.BN((0, base64_js_1.toByteArray)(value), 'le').toNumber() / Math.pow(10, constants_1.
|
|
54
|
+
return new anchor_1.BN((0, base64_js_1.toByteArray)(value), 'le').toNumber() / Math.pow(10, constants_1.TRD_DECIMALS);
|
|
60
55
|
});
|
|
61
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all Stakes
|
|
59
|
+
*/
|
|
62
60
|
getStakes() {
|
|
63
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
62
|
const response = yield this.program.account.stakeV2.all();
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
return response.map((stake) => (0, helpers_1.formatStake)(stake.account));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get User Stakes
|
|
68
|
+
*/
|
|
69
|
+
getUserStakes(wallet) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const response = yield this.program.account.stakeV2.all([
|
|
72
|
+
{
|
|
73
|
+
memcmp: {
|
|
74
|
+
offset: 8 + 1,
|
|
75
|
+
bytes: wallet.toBase58()
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]);
|
|
79
|
+
return response.map((stake) => (0, helpers_1.formatStake)(stake.account));
|
|
69
80
|
});
|
|
70
81
|
}
|
|
71
82
|
/**
|
|
72
|
-
* Get Stake
|
|
83
|
+
* Get Stake By Wallet
|
|
73
84
|
* @param wallet - User wallet
|
|
74
85
|
* @param collections - NFT collections
|
|
75
|
-
*
|
|
86
|
+
* @param tensor rank
|
|
76
87
|
*/
|
|
77
88
|
getStakeByWallet(wallet, collections, ranks) {
|
|
78
89
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
const response =
|
|
90
|
+
const response = yield this.getUserStakes(wallet);
|
|
80
91
|
const data = [];
|
|
81
92
|
for (const stake of response) {
|
|
82
93
|
const getRank = (0, getRarity_1.getRarityRank)(ranks, stake.mint, stake.name);
|
|
83
94
|
let available = 0;
|
|
95
|
+
yield new Promise((resolve) => setTimeout(resolve, 1000));
|
|
84
96
|
try {
|
|
85
97
|
available = yield this.getStakeRewards({
|
|
86
98
|
wallet,
|
|
@@ -90,31 +102,11 @@ class Stake {
|
|
|
90
102
|
});
|
|
91
103
|
}
|
|
92
104
|
catch (_a) { }
|
|
93
|
-
yield new Promise((resolve) => setTimeout(resolve, 500));
|
|
94
105
|
data.push(Object.assign(Object.assign({}, stake), { available }));
|
|
95
106
|
}
|
|
96
107
|
return data;
|
|
97
108
|
});
|
|
98
109
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Get Stakes by day
|
|
101
|
-
* @param day - Day timestamp
|
|
102
|
-
*/
|
|
103
|
-
getStakesByDay(day) {
|
|
104
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
-
const stakes = yield this.getStakes();
|
|
106
|
-
const rewards = [];
|
|
107
|
-
stakes.forEach((stake) => {
|
|
108
|
-
const date = stake.initTs * 1000;
|
|
109
|
-
const stakeDay = day * 1000;
|
|
110
|
-
const currentDate = new Date().getTime();
|
|
111
|
-
if (date <= stakeDay && stakeDay <= currentDate) {
|
|
112
|
-
rewards.push(stake);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
return rewards;
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
110
|
/**
|
|
119
111
|
* Stake NFT
|
|
120
112
|
* @param mint - NFT mint
|
|
@@ -124,11 +116,8 @@ class Stake {
|
|
|
124
116
|
stakeNft({ wallet, items }, options) {
|
|
125
117
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
118
|
let ixs = [];
|
|
127
|
-
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
128
119
|
for (let i = 0; i < items.length; i++) {
|
|
129
120
|
let item = items[i];
|
|
130
|
-
const FromAta = (0, helpers_1.getATASync)(wallet, item.mint);
|
|
131
|
-
const toAta = (0, helpers_1.getATASync)(stakeVaultPDA, item.mint);
|
|
132
121
|
ixs.push(yield this.program.methods
|
|
133
122
|
.stakeNft({
|
|
134
123
|
name: item.name,
|
|
@@ -136,9 +125,7 @@ class Stake {
|
|
|
136
125
|
})
|
|
137
126
|
.accounts({
|
|
138
127
|
signer: wallet,
|
|
139
|
-
|
|
140
|
-
mint: item.mint,
|
|
141
|
-
toAta: toAta
|
|
128
|
+
mint: item.mint
|
|
142
129
|
})
|
|
143
130
|
.instruction());
|
|
144
131
|
}
|
|
@@ -148,33 +135,26 @@ class Stake {
|
|
|
148
135
|
}));
|
|
149
136
|
}
|
|
150
137
|
const { blockhash } = yield this.provider.connection.getLatestBlockhash();
|
|
151
|
-
|
|
138
|
+
return this.provider.sendAndConfirm(new web3_js_1.VersionedTransaction(new web3_js_1.TransactionMessage({
|
|
152
139
|
instructions: ixs,
|
|
153
140
|
recentBlockhash: blockhash,
|
|
154
141
|
payerKey: wallet
|
|
155
|
-
}).compileToV0Message()
|
|
156
|
-
const tx = new web3_js_1.VersionedTransaction(messageV0);
|
|
157
|
-
return this.provider.sendAndConfirm(tx, [], {
|
|
142
|
+
}).compileToV0Message()), [], {
|
|
158
143
|
skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight,
|
|
159
144
|
commitment: 'confirmed'
|
|
160
145
|
});
|
|
161
146
|
});
|
|
162
147
|
}
|
|
163
148
|
/**
|
|
164
|
-
* Stake
|
|
149
|
+
* Stake Token
|
|
150
|
+
* @param name - Index
|
|
165
151
|
* @param wallet - User wallet
|
|
166
|
-
* @param
|
|
167
|
-
* @param collections - NFT collections
|
|
168
|
-
* @param rarity - NFT rarity
|
|
152
|
+
* @param amount - Amount to stake
|
|
169
153
|
*
|
|
170
154
|
*/
|
|
171
155
|
stakeToken({ name, wallet, amount }, options) {
|
|
172
156
|
return __awaiter(this, void 0, void 0, function* () {
|
|
173
|
-
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
174
|
-
const ttriad = new web3_js_1.PublicKey(constants_1.TTRIAD_MINT);
|
|
175
|
-
const FromAta = (0, helpers_1.getATASync)(wallet, ttriad);
|
|
176
157
|
const userPDA = (0, helpers_1.getUserAddressSync)(this.program.programId, wallet);
|
|
177
|
-
const toAta = (0, helpers_1.getATASync)(stakeVaultPDA, ttriad);
|
|
178
158
|
const method = this.program.methods
|
|
179
159
|
.stakeToken({
|
|
180
160
|
name,
|
|
@@ -183,10 +163,8 @@ class Stake {
|
|
|
183
163
|
})
|
|
184
164
|
.accounts({
|
|
185
165
|
signer: wallet,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
user: userPDA,
|
|
189
|
-
toAta: toAta
|
|
166
|
+
mint: constants_1.TRD_MINT,
|
|
167
|
+
user: userPDA
|
|
190
168
|
});
|
|
191
169
|
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
192
170
|
method.postInstructions([
|
|
@@ -199,27 +177,23 @@ class Stake {
|
|
|
199
177
|
});
|
|
200
178
|
}
|
|
201
179
|
/**
|
|
202
|
-
*
|
|
180
|
+
* Update Stake Vault
|
|
203
181
|
* @param wallet - User wallet
|
|
204
|
-
* @param
|
|
205
|
-
* @param
|
|
182
|
+
* @param amount - Reward amount to deposit (optional)
|
|
183
|
+
* @param status - Status of the stake vault (optional)
|
|
206
184
|
*
|
|
207
185
|
*/
|
|
208
|
-
|
|
186
|
+
updateStakeVault({ wallet, amount, status }, options) {
|
|
209
187
|
return __awaiter(this, void 0, void 0, function* () {
|
|
210
|
-
const StakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
211
|
-
const FromAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
212
|
-
const ToAta = (0, helpers_1.getATASync)(StakeVaultPDA, mint);
|
|
213
188
|
const method = this.program.methods
|
|
214
|
-
.
|
|
189
|
+
.updateStakeVault({
|
|
215
190
|
amount,
|
|
191
|
+
status,
|
|
216
192
|
stakeVault: this.stakeVaultName
|
|
217
193
|
})
|
|
218
194
|
.accounts({
|
|
219
195
|
signer: wallet,
|
|
220
|
-
|
|
221
|
-
mint: mint,
|
|
222
|
-
toAta: ToAta
|
|
196
|
+
mint: constants_1.TRD_MINT
|
|
223
197
|
});
|
|
224
198
|
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
225
199
|
method.postInstructions([
|
|
@@ -241,11 +215,11 @@ class Stake {
|
|
|
241
215
|
return __awaiter(this, void 0, void 0, function* () {
|
|
242
216
|
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
243
217
|
const stakePDA = (0, helpers_1.getStakeAddressSync)(this.program.programId, wallet, name);
|
|
244
|
-
const
|
|
218
|
+
const userPDA = (0, helpers_1.getUserAddressSync)(this.program.programId, wallet);
|
|
245
219
|
const method = this.program.methods.requestWithdrawStake().accounts({
|
|
246
220
|
signer: wallet,
|
|
247
221
|
mint: mint,
|
|
248
|
-
user:
|
|
222
|
+
user: userPDA,
|
|
249
223
|
stake: stakePDA,
|
|
250
224
|
stakeVault: stakeVaultPDA
|
|
251
225
|
});
|
|
@@ -270,17 +244,13 @@ class Stake {
|
|
|
270
244
|
return __awaiter(this, void 0, void 0, function* () {
|
|
271
245
|
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
272
246
|
const userPDA = (0, helpers_1.getUserAddressSync)(this.program.programId, wallet);
|
|
273
|
-
const FromAta = (0, helpers_1.getATASync)(stakeVaultPDA, mint);
|
|
274
247
|
const stakePDA = (0, helpers_1.getStakeAddressSync)(this.program.programId, wallet, name);
|
|
275
|
-
const ToAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
276
248
|
const method = this.program.methods.withdrawStake().accounts({
|
|
277
249
|
signer: wallet,
|
|
278
|
-
fromAta: FromAta,
|
|
279
250
|
stake: stakePDA,
|
|
280
251
|
stakeVault: stakeVaultPDA,
|
|
281
|
-
admin:
|
|
252
|
+
admin: constants_1.TRIAD_ADMIN,
|
|
282
253
|
mint: mint,
|
|
283
|
-
toAta: ToAta,
|
|
284
254
|
user: userPDA
|
|
285
255
|
});
|
|
286
256
|
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
@@ -302,11 +272,8 @@ class Stake {
|
|
|
302
272
|
*/
|
|
303
273
|
claimStakeRewards({ wallet, nftName, collections, rank }, options) {
|
|
304
274
|
return __awaiter(this, void 0, void 0, function* () {
|
|
305
|
-
const
|
|
306
|
-
const
|
|
307
|
-
const Stake = (0, helpers_1.getStakeAddressSync)(this.program.programId, wallet, nftName);
|
|
308
|
-
const FromAta = (0, helpers_1.getATASync)(StakeVault, mint);
|
|
309
|
-
const ToAta = (0, helpers_1.getATASync)(wallet, mint);
|
|
275
|
+
const stakeVaultPDA = (0, helpers_1.getStakeVaultAddressSync)(this.program.programId, this.stakeVaultName);
|
|
276
|
+
const stakePDA = (0, helpers_1.getStakeAddressSync)(this.program.programId, wallet, nftName);
|
|
310
277
|
const method = this.program.methods
|
|
311
278
|
.claimStakeRewards({
|
|
312
279
|
collections,
|
|
@@ -314,12 +281,10 @@ class Stake {
|
|
|
314
281
|
})
|
|
315
282
|
.accounts({
|
|
316
283
|
signer: wallet,
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
stakeVault: StakeVault,
|
|
322
|
-
verifier: new web3_js_1.PublicKey(constants_1.VERIFIER)
|
|
284
|
+
mint: constants_1.TRD_MINT,
|
|
285
|
+
stake: stakePDA,
|
|
286
|
+
stakeVault: stakeVaultPDA,
|
|
287
|
+
verifier: constants_1.VERIFIER
|
|
323
288
|
});
|
|
324
289
|
if (options === null || options === void 0 ? void 0 : options.microLamports) {
|
|
325
290
|
method.postInstructions([
|
|
@@ -332,9 +297,9 @@ class Stake {
|
|
|
332
297
|
});
|
|
333
298
|
}
|
|
334
299
|
/**
|
|
335
|
-
* Update
|
|
300
|
+
* Update Boost
|
|
336
301
|
* @param wallet - User wallet
|
|
337
|
-
* @param
|
|
302
|
+
* @param nfts - Name of the nfts
|
|
338
303
|
*
|
|
339
304
|
*/
|
|
340
305
|
updateBoost({ wallet, nfts }, options) {
|
|
@@ -356,13 +321,11 @@ class Stake {
|
|
|
356
321
|
}));
|
|
357
322
|
}
|
|
358
323
|
const { blockhash } = yield this.provider.connection.getLatestBlockhash();
|
|
359
|
-
|
|
324
|
+
return this.provider.sendAndConfirm(new web3_js_1.VersionedTransaction(new web3_js_1.TransactionMessage({
|
|
360
325
|
instructions: ixs,
|
|
361
326
|
recentBlockhash: blockhash,
|
|
362
327
|
payerKey: wallet
|
|
363
|
-
}).compileToV0Message()
|
|
364
|
-
const tx = new web3_js_1.VersionedTransaction(messageV0);
|
|
365
|
-
return this.provider.sendAndConfirm(tx, [], {
|
|
328
|
+
}).compileToV0Message()), [], {
|
|
366
329
|
skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight,
|
|
367
330
|
commitment: 'confirmed'
|
|
368
331
|
});
|