@streamflow/staking 7.5.2 → 7.5.3-alpha.cffa362.20250508190445
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/cjs/index.cjs +3879 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +298 -0
- package/dist/cjs/solana/descriptor/fee_manager.cjs +4 -0
- package/dist/cjs/solana/descriptor/fee_manager.cjs.map +1 -0
- package/dist/cjs/solana/descriptor/fee_manager.d.cts +292 -0
- package/dist/cjs/solana/descriptor/reward_pool.cjs +4 -0
- package/dist/cjs/solana/descriptor/reward_pool.cjs.map +1 -0
- package/dist/cjs/solana/descriptor/reward_pool.d.cts +967 -0
- package/dist/cjs/solana/descriptor/stake_pool.cjs +4 -0
- package/dist/cjs/solana/descriptor/stake_pool.cjs.map +1 -0
- package/dist/cjs/solana/descriptor/stake_pool.d.cts +954 -0
- package/dist/esm/index.d.ts +298 -7
- package/dist/esm/index.js +3854 -7
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/solana/descriptor/fee_manager.d.ts +3 -1
- package/dist/esm/solana/descriptor/fee_manager.js +3 -1
- package/dist/esm/solana/descriptor/fee_manager.js.map +1 -0
- package/dist/esm/solana/descriptor/idl/fee_manager.json +407 -407
- package/dist/esm/solana/descriptor/idl/reward_pool.json +1294 -1294
- package/dist/esm/solana/descriptor/idl/stake_pool.json +1256 -918
- package/dist/esm/solana/descriptor/reward_pool.d.ts +3 -1
- package/dist/esm/solana/descriptor/reward_pool.js +3 -1
- package/dist/esm/solana/descriptor/reward_pool.js.map +1 -0
- package/dist/esm/solana/descriptor/stake_pool.d.ts +234 -2
- package/dist/esm/solana/descriptor/stake_pool.js +3 -1
- package/dist/esm/solana/descriptor/stake_pool.js.map +1 -0
- package/package.json +63 -18
- package/dist/cjs/__tests__/solana/rewards.spec.js +0 -61
- package/dist/cjs/index.js +0 -37
- package/dist/cjs/solana/client.js +0 -336
- package/dist/cjs/solana/constants.js +0 -72
- package/dist/cjs/solana/descriptor/fee_manager.js +0 -2
- package/dist/cjs/solana/descriptor/idl/fee_manager.json +0 -436
- package/dist/cjs/solana/descriptor/idl/reward_pool.json +0 -1372
- package/dist/cjs/solana/descriptor/idl/stake_pool.json +0 -980
- package/dist/cjs/solana/descriptor/reward_pool.js +0 -2
- package/dist/cjs/solana/descriptor/stake_pool.js +0 -2
- package/dist/cjs/solana/lib/derive-accounts.js +0 -46
- package/dist/cjs/solana/lib/fee-amounts.js +0 -44
- package/dist/cjs/solana/lib/rewards.js +0 -154
- package/dist/cjs/solana/lib/stake-weight.js +0 -19
- package/dist/cjs/solana/types.js +0 -2
- package/dist/esm/__tests__/solana/rewards.spec.d.ts +0 -1
- package/dist/esm/__tests__/solana/rewards.spec.js +0 -56
- package/dist/esm/solana/client.d.ts +0 -89
- package/dist/esm/solana/client.js +0 -334
- package/dist/esm/solana/constants.d.ts +0 -54
- package/dist/esm/solana/constants.js +0 -69
- package/dist/esm/solana/lib/derive-accounts.d.ts +0 -10
- package/dist/esm/solana/lib/derive-accounts.js +0 -31
- package/dist/esm/solana/lib/fee-amounts.d.ts +0 -9
- package/dist/esm/solana/lib/fee-amounts.js +0 -38
- package/dist/esm/solana/lib/rewards.d.ts +0 -26
- package/dist/esm/solana/lib/rewards.js +0 -152
- package/dist/esm/solana/lib/stake-weight.d.ts +0 -2
- package/dist/esm/solana/lib/stake-weight.js +0 -12
- package/dist/esm/solana/types.d.ts +0 -77
- package/dist/esm/solana/types.js +0 -1
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SolanaStakingClient = void 0;
|
|
7
|
-
const anchor_1 = require("@coral-xyz/anchor");
|
|
8
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
9
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
10
|
-
const common_1 = require("@streamflow/common");
|
|
11
|
-
const solana_1 = require("@streamflow/common/solana");
|
|
12
|
-
const constants_js_1 = require("./constants.js");
|
|
13
|
-
const fee_manager_json_1 = __importDefault(require("./descriptor/idl/fee_manager.json"));
|
|
14
|
-
const reward_pool_json_1 = __importDefault(require("./descriptor/idl/reward_pool.json"));
|
|
15
|
-
const stake_pool_json_1 = __importDefault(require("./descriptor/idl/stake_pool.json"));
|
|
16
|
-
const derive_accounts_js_1 = require("./lib/derive-accounts.js");
|
|
17
|
-
class SolanaStakingClient {
|
|
18
|
-
constructor({ clusterUrl, cluster = common_1.ICluster.Mainnet, commitment = "confirmed", programIds, sendRate = 1, sendThrottler, }) {
|
|
19
|
-
this.cluster = cluster;
|
|
20
|
-
this.commitment = commitment;
|
|
21
|
-
this.connection = new web3_js_1.Connection(clusterUrl, this.commitment);
|
|
22
|
-
this.sendThrottler = sendThrottler ?? (0, solana_1.buildSendThrottler)(sendRate);
|
|
23
|
-
const stakePoolIdl = {
|
|
24
|
-
...stake_pool_json_1.default,
|
|
25
|
-
address: programIds?.stakePool ?? constants_js_1.STAKE_POOL_PROGRAM_ID[cluster] ?? stake_pool_json_1.default.address,
|
|
26
|
-
};
|
|
27
|
-
const rewardPoolIdl = {
|
|
28
|
-
...reward_pool_json_1.default,
|
|
29
|
-
address: programIds?.rewardPool ?? constants_js_1.REWARD_POOL_PROGRAM_ID[cluster] ?? reward_pool_json_1.default.address,
|
|
30
|
-
};
|
|
31
|
-
const feeManagerIdl = {
|
|
32
|
-
...fee_manager_json_1.default,
|
|
33
|
-
address: programIds?.feeManager ?? fee_manager_json_1.default.address,
|
|
34
|
-
};
|
|
35
|
-
this.programs = {
|
|
36
|
-
stakePoolProgram: new anchor_1.Program(stakePoolIdl, {
|
|
37
|
-
connection: this.connection,
|
|
38
|
-
}),
|
|
39
|
-
rewardPoolProgram: new anchor_1.Program(rewardPoolIdl, {
|
|
40
|
-
connection: this.connection,
|
|
41
|
-
}),
|
|
42
|
-
feeManagerProgram: new anchor_1.Program(feeManagerIdl, {
|
|
43
|
-
connection: this.connection,
|
|
44
|
-
}),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
getCurrentProgramId(programKey) {
|
|
48
|
-
const program = this.programs[programKey];
|
|
49
|
-
(0, common_1.invariant)(program, `Program ${programKey} is not found`);
|
|
50
|
-
return program.programId;
|
|
51
|
-
}
|
|
52
|
-
getCommitment() {
|
|
53
|
-
return typeof this.commitment == "string" ? this.commitment : this.commitment.commitment;
|
|
54
|
-
}
|
|
55
|
-
async getStakePool(id) {
|
|
56
|
-
const { stakePoolProgram } = this.programs;
|
|
57
|
-
return stakePoolProgram.account.stakePool.fetch(id);
|
|
58
|
-
}
|
|
59
|
-
async searchStakePools(criteria = {}) {
|
|
60
|
-
const { stakePoolProgram } = this.programs;
|
|
61
|
-
return stakePoolProgram.account.stakePool.all((0, solana_1.getFilters)(criteria, constants_js_1.STAKE_POOL_BYTE_OFFSETS));
|
|
62
|
-
}
|
|
63
|
-
async getStakeEntry(id) {
|
|
64
|
-
const { stakePoolProgram } = this.programs;
|
|
65
|
-
return stakePoolProgram.account.stakeEntry.fetch(id);
|
|
66
|
-
}
|
|
67
|
-
async searchStakeEntries(criteria = {}) {
|
|
68
|
-
const { stakePoolProgram } = this.programs;
|
|
69
|
-
return stakePoolProgram.account.stakeEntry.all((0, solana_1.getFilters)(criteria, constants_js_1.STAKE_ENTRY_BYTE_OFFSETS));
|
|
70
|
-
}
|
|
71
|
-
async searchRewardPools(criteria = {}) {
|
|
72
|
-
const { rewardPoolProgram } = this.programs;
|
|
73
|
-
return rewardPoolProgram.account.rewardPool.all((0, solana_1.getFilters)(criteria, constants_js_1.REWARD_POOL_BYTE_OFFSETS));
|
|
74
|
-
}
|
|
75
|
-
async searchRewardEntries(criteria) {
|
|
76
|
-
const { rewardPoolProgram } = this.programs;
|
|
77
|
-
return rewardPoolProgram.account.rewardEntry.all((0, solana_1.getFilters)(criteria, constants_js_1.REWARD_ENTRY_BYTE_OFFSETS));
|
|
78
|
-
}
|
|
79
|
-
async getFee(target) {
|
|
80
|
-
const perTargetFee = await this.getFeeValueIfExists(target);
|
|
81
|
-
if (perTargetFee) {
|
|
82
|
-
return perTargetFee;
|
|
83
|
-
}
|
|
84
|
-
return this.getDefaultFeeValue();
|
|
85
|
-
}
|
|
86
|
-
getDefaultFeeValue() {
|
|
87
|
-
const { feeManagerProgram } = this.programs;
|
|
88
|
-
const feeValueKey = (0, derive_accounts_js_1.deriveConfigPDA)(feeManagerProgram.programId);
|
|
89
|
-
return feeManagerProgram.account.config.fetch(feeValueKey);
|
|
90
|
-
}
|
|
91
|
-
getFeeValueIfExists(target) {
|
|
92
|
-
const { feeManagerProgram } = this.programs;
|
|
93
|
-
const feeValueKey = (0, derive_accounts_js_1.deriveFeeValuePDA)(feeManagerProgram.programId, new web3_js_1.PublicKey(target));
|
|
94
|
-
return feeManagerProgram.account.feeValue.fetchNullable(feeValueKey);
|
|
95
|
-
}
|
|
96
|
-
async createStakePool(data, extParams) {
|
|
97
|
-
const { ixs, publicKey } = await this.prepareCreateStakePoolInstructions(data, extParams);
|
|
98
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
99
|
-
return {
|
|
100
|
-
ixs,
|
|
101
|
-
txId: signature,
|
|
102
|
-
metadataId: publicKey,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
async prepareCreateStakePoolInstructions({ maxWeight, maxDuration, minDuration, mint, permissionless = false, freezeStakeMint = null, unstakePeriod = null, nonce, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, }, extParams) {
|
|
106
|
-
const { stakePoolProgram } = this.programs;
|
|
107
|
-
const creator = extParams.invoker.publicKey;
|
|
108
|
-
(0, common_1.invariant)(creator, "Undefined invoker publicKey");
|
|
109
|
-
const createInstruction = await stakePoolProgram.methods
|
|
110
|
-
.createPool(nonce, maxWeight, minDuration, maxDuration, permissionless, freezeStakeMint, unstakePeriod)
|
|
111
|
-
.accounts({
|
|
112
|
-
creator,
|
|
113
|
-
mint,
|
|
114
|
-
tokenProgram: tokenProgramId,
|
|
115
|
-
})
|
|
116
|
-
.instruction();
|
|
117
|
-
const stakePoolPDA = (0, derive_accounts_js_1.deriveStakePoolPDA)(stakePoolProgram.programId, (0, solana_1.pk)(mint), creator, nonce);
|
|
118
|
-
return { ixs: [createInstruction], publicKey: stakePoolPDA };
|
|
119
|
-
}
|
|
120
|
-
async stake(data, extParams) {
|
|
121
|
-
const { ixs } = await this.prepareStakeInstructions(data, extParams);
|
|
122
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
123
|
-
return {
|
|
124
|
-
ixs,
|
|
125
|
-
txId: signature,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
async prepareStakeInstructions({ nonce, amount, duration, stakePool, stakePoolMint, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID }, extParams) {
|
|
129
|
-
const { stakePoolProgram } = this.programs;
|
|
130
|
-
const staker = extParams.invoker.publicKey;
|
|
131
|
-
(0, common_1.invariant)(staker, "Undefined invoker publicKey");
|
|
132
|
-
const mint = (0, derive_accounts_js_1.deriveStakeMintPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool));
|
|
133
|
-
const stakeMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, staker, true, (0, solana_1.pk)(tokenProgramId));
|
|
134
|
-
const poolMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)((0, solana_1.pk)(stakePoolMint), staker, true, (0, solana_1.pk)(tokenProgramId));
|
|
135
|
-
const instruction = await stakePoolProgram.methods
|
|
136
|
-
.stake(nonce, amount, duration)
|
|
137
|
-
.accounts({
|
|
138
|
-
stakePool: stakePool,
|
|
139
|
-
tokenProgram: tokenProgramId,
|
|
140
|
-
from: poolMintAccountKey,
|
|
141
|
-
to: stakeMintAccountKey,
|
|
142
|
-
authority: staker,
|
|
143
|
-
payer: staker,
|
|
144
|
-
})
|
|
145
|
-
.instruction();
|
|
146
|
-
return { ixs: [instruction] };
|
|
147
|
-
}
|
|
148
|
-
async unstake(data, extParams) {
|
|
149
|
-
const { ixs } = await this.prepareUnstakeInstructions(data, extParams);
|
|
150
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
151
|
-
return {
|
|
152
|
-
ixs,
|
|
153
|
-
txId: signature,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
async prepareUnstakeInstructions({ stakePool, stakePoolMint, nonce, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID }, extParams) {
|
|
157
|
-
const { stakePoolProgram } = this.programs;
|
|
158
|
-
const staker = extParams.invoker.publicKey;
|
|
159
|
-
(0, common_1.invariant)(staker, "Undefined invoker publicKey");
|
|
160
|
-
const stakeMintKey = (0, derive_accounts_js_1.deriveStakeMintPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool));
|
|
161
|
-
const stakeEntryKey = (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool), staker, nonce);
|
|
162
|
-
const poolMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)((0, solana_1.pk)(stakePoolMint), staker, true, (0, solana_1.pk)(tokenProgramId));
|
|
163
|
-
const stakeMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(stakeMintKey, staker, true, (0, solana_1.pk)(tokenProgramId));
|
|
164
|
-
const instruction = await stakePoolProgram.methods
|
|
165
|
-
.unstake()
|
|
166
|
-
.accounts({
|
|
167
|
-
stakeEntry: stakeEntryKey,
|
|
168
|
-
to: poolMintAccountKey,
|
|
169
|
-
from: stakeMintAccountKey,
|
|
170
|
-
authority: staker,
|
|
171
|
-
tokenProgram: tokenProgramId,
|
|
172
|
-
})
|
|
173
|
-
.instruction();
|
|
174
|
-
return { ixs: [instruction] };
|
|
175
|
-
}
|
|
176
|
-
async createRewardPool(data, extParams) {
|
|
177
|
-
const { ixs, publicKey } = await this.prepareCreateRewardPoolInstructions(data, extParams);
|
|
178
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
179
|
-
return {
|
|
180
|
-
ixs,
|
|
181
|
-
txId: signature,
|
|
182
|
-
metadataId: publicKey,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
async prepareCreateRewardPoolInstructions({ nonce, rewardAmount, rewardPeriod, rewardMint, permissionless = false, stakePool, lastClaimPeriodOpt, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, }, extParams) {
|
|
186
|
-
const { rewardPoolProgram } = this.programs;
|
|
187
|
-
const creator = extParams.invoker.publicKey;
|
|
188
|
-
(0, common_1.invariant)(creator, "Undefined invoker publicKey");
|
|
189
|
-
const instruction = await rewardPoolProgram.methods
|
|
190
|
-
.createPool(nonce, rewardAmount, rewardPeriod, permissionless, lastClaimPeriodOpt)
|
|
191
|
-
.accounts({
|
|
192
|
-
creator,
|
|
193
|
-
stakePool,
|
|
194
|
-
mint: rewardMint,
|
|
195
|
-
tokenProgram: tokenProgramId,
|
|
196
|
-
})
|
|
197
|
-
.instruction();
|
|
198
|
-
const rewardPoolKey = (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), (0, solana_1.pk)(rewardMint), nonce);
|
|
199
|
-
return { publicKey: rewardPoolKey, ixs: [instruction] };
|
|
200
|
-
}
|
|
201
|
-
async claimRewards(data, extParams) {
|
|
202
|
-
const { ixs } = await this.prepareClaimRewardsInstructions(data, extParams);
|
|
203
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
204
|
-
return {
|
|
205
|
-
ixs,
|
|
206
|
-
txId: signature,
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
async prepareClaimRewardsInstructions({ rewardPoolNonce, depositNonce, stakePool, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, rewardMint }, extParams) {
|
|
210
|
-
const { stakePoolProgram, rewardPoolProgram } = this.programs;
|
|
211
|
-
const staker = extParams.invoker.publicKey;
|
|
212
|
-
(0, common_1.invariant)(staker, "Undefined invoker publicKey");
|
|
213
|
-
const instruction = await rewardPoolProgram.methods
|
|
214
|
-
.claimRewards()
|
|
215
|
-
.accounts({
|
|
216
|
-
stakeEntry: (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool), staker, depositNonce),
|
|
217
|
-
rewardPool: (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), (0, solana_1.pk)(rewardMint), rewardPoolNonce),
|
|
218
|
-
claimant: staker,
|
|
219
|
-
tokenProgram: tokenProgramId,
|
|
220
|
-
to: (0, spl_token_1.getAssociatedTokenAddressSync)((0, solana_1.pk)(rewardMint), staker, true, (0, solana_1.pk)(tokenProgramId)),
|
|
221
|
-
})
|
|
222
|
-
.instruction();
|
|
223
|
-
return { ixs: [instruction] };
|
|
224
|
-
}
|
|
225
|
-
async fundPool(data, extParams) {
|
|
226
|
-
const { ixs } = await this.prepareFundPoolInstructions(data, extParams);
|
|
227
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
228
|
-
return {
|
|
229
|
-
ixs,
|
|
230
|
-
txId: signature,
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
async prepareFundPoolInstructions({ amount, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, rewardMint, stakePool, feeValue, nonce }, extParams) {
|
|
234
|
-
const { rewardPoolProgram } = this.programs;
|
|
235
|
-
const staker = extParams.invoker.publicKey;
|
|
236
|
-
(0, common_1.invariant)(staker, "Undefined invoker publicKey");
|
|
237
|
-
const existingFee = await this.getFeeValueIfExists(staker);
|
|
238
|
-
const rewardMintPk = (0, solana_1.pk)(rewardMint);
|
|
239
|
-
const tokenProgramPk = (0, solana_1.pk)(tokenProgramId);
|
|
240
|
-
const treasuryATA = !existingFee || existingFee.streamflowFee.gtn(0)
|
|
241
|
-
? await (0, solana_1.checkOrCreateAtaBatch)(this.connection, [constants_js_1.STREAMFLOW_TREASURY_PUBLIC_KEY], rewardMintPk, extParams.invoker, tokenProgramPk)
|
|
242
|
-
: null;
|
|
243
|
-
const rewardPoolPda = (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), rewardMintPk, nonce);
|
|
244
|
-
const instruction = await rewardPoolProgram.methods
|
|
245
|
-
.fundPool(amount)
|
|
246
|
-
.accountsPartial({
|
|
247
|
-
funder: staker,
|
|
248
|
-
rewardPool: rewardPoolPda,
|
|
249
|
-
from: (0, spl_token_1.getAssociatedTokenAddressSync)(rewardMintPk, staker, true, tokenProgramPk),
|
|
250
|
-
tokenProgram: tokenProgramId,
|
|
251
|
-
vault: (0, derive_accounts_js_1.deriveRewardVaultPDA)(rewardPoolProgram.programId, rewardPoolPda),
|
|
252
|
-
mint: rewardMint,
|
|
253
|
-
feeValue,
|
|
254
|
-
})
|
|
255
|
-
.instruction();
|
|
256
|
-
return { ixs: treasuryATA ? treasuryATA.concat([instruction]) : [instruction] };
|
|
257
|
-
}
|
|
258
|
-
async createRewardEntry(data, extParams) {
|
|
259
|
-
const { ixs } = await this.prepareCreateRewardEntryInstructions(data, extParams);
|
|
260
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
261
|
-
return {
|
|
262
|
-
ixs,
|
|
263
|
-
txId: signature,
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
async prepareCreateRewardEntryInstructions({ stakePool, rewardPoolNonce, depositNonce, rewardMint }, extParams) {
|
|
267
|
-
const { stakePoolProgram, rewardPoolProgram } = this.programs;
|
|
268
|
-
const staker = extParams.invoker.publicKey;
|
|
269
|
-
(0, common_1.invariant)(staker, "Undefined invoker publicKey");
|
|
270
|
-
const instruction = await rewardPoolProgram.methods
|
|
271
|
-
.createEntry()
|
|
272
|
-
.accounts({
|
|
273
|
-
payer: staker,
|
|
274
|
-
authority: staker,
|
|
275
|
-
stakeEntry: (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool), staker, depositNonce),
|
|
276
|
-
rewardPool: (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), (0, solana_1.pk)(rewardMint), rewardPoolNonce),
|
|
277
|
-
})
|
|
278
|
-
.instruction();
|
|
279
|
-
return { ixs: [instruction] };
|
|
280
|
-
}
|
|
281
|
-
async updateRewardPool(data, extParams) {
|
|
282
|
-
const { ixs } = await this.prepareUpdateRewardPoolInstructions(data, extParams);
|
|
283
|
-
const { signature } = await this.execute(ixs, extParams);
|
|
284
|
-
return {
|
|
285
|
-
ixs,
|
|
286
|
-
txId: signature,
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
async prepareUpdateRewardPoolInstructions({ rewardPool, rewardAmount, rewardPeriod, stakePool }, extParams) {
|
|
290
|
-
const { rewardPoolProgram } = this.programs;
|
|
291
|
-
const invoker = extParams.invoker.publicKey;
|
|
292
|
-
(0, common_1.invariant)(invoker, "Undefined invoker publicKey");
|
|
293
|
-
const instruction = await rewardPoolProgram.methods
|
|
294
|
-
.updatePool(rewardAmount, rewardPeriod)
|
|
295
|
-
.accountsPartial({
|
|
296
|
-
stakePool,
|
|
297
|
-
authority: invoker,
|
|
298
|
-
rewardPool,
|
|
299
|
-
})
|
|
300
|
-
.instruction();
|
|
301
|
-
return { ixs: [instruction] };
|
|
302
|
-
}
|
|
303
|
-
decode(programKey, accountName, accInfo) {
|
|
304
|
-
const decodingProgram = this.programs[programKey];
|
|
305
|
-
(0, common_1.invariant)(decodingProgram, `Decoding program with key ${programKey} is not available`);
|
|
306
|
-
return decodingProgram.coder.accounts.decode(accountName.toString(), accInfo);
|
|
307
|
-
}
|
|
308
|
-
getDiscriminator(programKey, accountName) {
|
|
309
|
-
const decodingProgram = this.programs[programKey];
|
|
310
|
-
(0, common_1.invariant)(decodingProgram, `Decoding program with key ${programKey} is not available`);
|
|
311
|
-
const accountEntity = decodingProgram.idl.accounts.find((acc) => acc.name === accountName);
|
|
312
|
-
(0, common_1.invariant)(accountEntity, `Decoding program with key ${programKey} doesn't specify account with name ${accountName.toString()}`);
|
|
313
|
-
return accountEntity.discriminator;
|
|
314
|
-
}
|
|
315
|
-
async execute(ixs, extParams) {
|
|
316
|
-
const { tx, hash, context } = await (0, solana_1.prepareTransaction)(this.connection, (0, solana_1.prepareBaseInstructions)(this.connection, extParams).concat(ixs), extParams.invoker.publicKey);
|
|
317
|
-
try {
|
|
318
|
-
const signature = await (0, solana_1.signAndExecuteTransaction)(this.connection, extParams.invoker, tx, {
|
|
319
|
-
hash,
|
|
320
|
-
context,
|
|
321
|
-
commitment: this.getCommitment(),
|
|
322
|
-
}, { sendThrottler: this.sendThrottler });
|
|
323
|
-
return { signature };
|
|
324
|
-
}
|
|
325
|
-
catch (err) {
|
|
326
|
-
if (err instanceof Error) {
|
|
327
|
-
const parsed = (0, anchor_1.translateError)(err, (0, anchor_1.parseIdlErrors)(this.programs.stakePoolProgram.idl));
|
|
328
|
-
if (parsed) {
|
|
329
|
-
throw new common_1.ContractError(err, parsed.name, parsed.message);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
throw err;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
exports.SolanaStakingClient = SolanaStakingClient;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FEE_PROGRAM_ID = exports.REWARD_POOL_PROGRAM_ID = exports.STAKE_POOL_PROGRAM_ID = exports.REWARD_ENTRY_BYTE_OFFSETS = exports.REWARD_ENTRY_STAKE_ENTRY_OFFSET = exports.REWARD_ENTRY_REWARD_POOL_OFFSET = exports.REWARD_POOL_BYTE_OFFSETS = exports.REWARD_POOL_MINT_OFFSET = exports.REWARD_POOL_STAKE_POOL_OFFSET = exports.STAKE_POOL_BYTE_OFFSETS = exports.STAKE_POOL_CREATOR_OFFSET = exports.STAKE_POOL_MINT_OFFSET = exports.STAKE_ENTRY_BYTE_OFFSETS = exports.STAKE_ENTRY_OWNER_OFFSET = exports.STAKE_ENTRY_PAYER_OFFSET = exports.STAKE_ENTRY_STAKE_POOL_OFFSET = exports.ANCHOR_DISCRIMINATOR_OFFSET = exports.STREAMFLOW_TREASURY_PUBLIC_KEY = exports.FEE_VALUE_PREFIX = exports.CONFIG_PREFIX = exports.REWARD_ENTRY_PREFIX = exports.REWARD_VAULT_PREFIX = exports.REWARD_POOL_PREFIX = exports.STAKE_VAULT_PREFIX = exports.STAKE_MINT_PREFIX = exports.STAKE_POOL_PREFIX = exports.STAKE_ENTRY_PREFIX = exports.STAKE_ENTRY_DISCRIMINATOR = exports.U64_MAX = exports.REWARD_AMOUNT_PRECISION_FACTOR_BN = exports.REWARD_AMOUNT_PRECISION_FACTOR = exports.REWARD_AMOUNT_DECIMALS = exports.SCALE_PRECISION_FACTOR_BN = exports.SCALE_PRECISION_FACTOR = exports.DEFAULT_FEE_BN = exports.DEFAULT_FEE = exports.FEE_PRECISION_FACTOR_BN = exports.FEE_PRECISION_FACTOR = void 0;
|
|
4
|
-
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
-
const common_1 = require("@streamflow/common");
|
|
6
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
7
|
-
exports.FEE_PRECISION_FACTOR = 10000;
|
|
8
|
-
exports.FEE_PRECISION_FACTOR_BN = new anchor_1.BN(exports.FEE_PRECISION_FACTOR);
|
|
9
|
-
exports.DEFAULT_FEE = 19;
|
|
10
|
-
exports.DEFAULT_FEE_BN = new anchor_1.BN(exports.DEFAULT_FEE);
|
|
11
|
-
exports.SCALE_PRECISION_FACTOR = 1000000000;
|
|
12
|
-
exports.SCALE_PRECISION_FACTOR_BN = new anchor_1.BN(exports.SCALE_PRECISION_FACTOR);
|
|
13
|
-
exports.REWARD_AMOUNT_DECIMALS = 9;
|
|
14
|
-
exports.REWARD_AMOUNT_PRECISION_FACTOR = 1000000000;
|
|
15
|
-
exports.REWARD_AMOUNT_PRECISION_FACTOR_BN = new anchor_1.BN(exports.REWARD_AMOUNT_PRECISION_FACTOR);
|
|
16
|
-
exports.U64_MAX = 18446744073709551615n;
|
|
17
|
-
exports.STAKE_ENTRY_DISCRIMINATOR = [187, 127, 9, 35, 155, 68, 86, 40];
|
|
18
|
-
exports.STAKE_ENTRY_PREFIX = Buffer.from("stake-entry", "utf-8");
|
|
19
|
-
exports.STAKE_POOL_PREFIX = Buffer.from("stake-pool", "utf-8");
|
|
20
|
-
exports.STAKE_MINT_PREFIX = Buffer.from("stake-mint", "utf-8");
|
|
21
|
-
exports.STAKE_VAULT_PREFIX = Buffer.from("stake-vault", "utf-8");
|
|
22
|
-
exports.REWARD_POOL_PREFIX = Buffer.from("reward-pool", "utf-8");
|
|
23
|
-
exports.REWARD_VAULT_PREFIX = Buffer.from("reward-vault", "utf-8");
|
|
24
|
-
exports.REWARD_ENTRY_PREFIX = Buffer.from("reward-entry", "utf-8");
|
|
25
|
-
exports.CONFIG_PREFIX = Buffer.from("config", "utf-8");
|
|
26
|
-
exports.FEE_VALUE_PREFIX = Buffer.from("fee-value", "utf-8");
|
|
27
|
-
exports.STREAMFLOW_TREASURY_PUBLIC_KEY = new web3_js_1.PublicKey("5SEpbdjFK5FxwTvfsGMXVQTD2v4M2c5tyRTxhdsPkgDw");
|
|
28
|
-
exports.ANCHOR_DISCRIMINATOR_OFFSET = 8;
|
|
29
|
-
exports.STAKE_ENTRY_STAKE_POOL_OFFSET = exports.ANCHOR_DISCRIMINATOR_OFFSET + 4;
|
|
30
|
-
exports.STAKE_ENTRY_PAYER_OFFSET = exports.STAKE_ENTRY_STAKE_POOL_OFFSET + 32;
|
|
31
|
-
exports.STAKE_ENTRY_OWNER_OFFSET = exports.STAKE_ENTRY_PAYER_OFFSET + 32;
|
|
32
|
-
exports.STAKE_ENTRY_BYTE_OFFSETS = {
|
|
33
|
-
payer: exports.STAKE_ENTRY_PAYER_OFFSET,
|
|
34
|
-
authority: exports.STAKE_ENTRY_OWNER_OFFSET,
|
|
35
|
-
stakePool: exports.STAKE_ENTRY_STAKE_POOL_OFFSET,
|
|
36
|
-
};
|
|
37
|
-
exports.STAKE_POOL_MINT_OFFSET = exports.ANCHOR_DISCRIMINATOR_OFFSET + 2;
|
|
38
|
-
exports.STAKE_POOL_CREATOR_OFFSET = exports.STAKE_POOL_MINT_OFFSET + 32;
|
|
39
|
-
exports.STAKE_POOL_BYTE_OFFSETS = {
|
|
40
|
-
mint: exports.STAKE_POOL_MINT_OFFSET,
|
|
41
|
-
creator: exports.STAKE_POOL_CREATOR_OFFSET,
|
|
42
|
-
};
|
|
43
|
-
exports.REWARD_POOL_STAKE_POOL_OFFSET = exports.ANCHOR_DISCRIMINATOR_OFFSET + 2;
|
|
44
|
-
exports.REWARD_POOL_MINT_OFFSET = exports.REWARD_POOL_STAKE_POOL_OFFSET + 32;
|
|
45
|
-
exports.REWARD_POOL_BYTE_OFFSETS = {
|
|
46
|
-
stakePool: exports.REWARD_POOL_STAKE_POOL_OFFSET,
|
|
47
|
-
mint: exports.REWARD_POOL_MINT_OFFSET,
|
|
48
|
-
};
|
|
49
|
-
exports.REWARD_ENTRY_REWARD_POOL_OFFSET = exports.ANCHOR_DISCRIMINATOR_OFFSET;
|
|
50
|
-
exports.REWARD_ENTRY_STAKE_ENTRY_OFFSET = exports.REWARD_ENTRY_REWARD_POOL_OFFSET + 32;
|
|
51
|
-
exports.REWARD_ENTRY_BYTE_OFFSETS = {
|
|
52
|
-
stakeEntry: exports.REWARD_ENTRY_STAKE_ENTRY_OFFSET,
|
|
53
|
-
rewardPool: exports.REWARD_ENTRY_REWARD_POOL_OFFSET,
|
|
54
|
-
};
|
|
55
|
-
exports.STAKE_POOL_PROGRAM_ID = {
|
|
56
|
-
[common_1.ICluster.Mainnet]: "STAKEvGqQTtzJZH6BWDcbpzXXn2BBerPAgQ3EGLN2GH",
|
|
57
|
-
[common_1.ICluster.Devnet]: "STAKEvGqQTtzJZH6BWDcbpzXXn2BBerPAgQ3EGLN2GH",
|
|
58
|
-
[common_1.ICluster.Testnet]: "STAKEvGqQTtzJZH6BWDcbpzXXn2BBerPAgQ3EGLN2GH",
|
|
59
|
-
[common_1.ICluster.Local]: "STAKEvGqQTtzJZH6BWDcbpzXXn2BBerPAgQ3EGLN2GH",
|
|
60
|
-
};
|
|
61
|
-
exports.REWARD_POOL_PROGRAM_ID = {
|
|
62
|
-
[common_1.ICluster.Mainnet]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
|
|
63
|
-
[common_1.ICluster.Devnet]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
|
|
64
|
-
[common_1.ICluster.Testnet]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
|
|
65
|
-
[common_1.ICluster.Local]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
|
|
66
|
-
};
|
|
67
|
-
exports.FEE_PROGRAM_ID = {
|
|
68
|
-
[common_1.ICluster.Mainnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
69
|
-
[common_1.ICluster.Devnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
70
|
-
[common_1.ICluster.Testnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
71
|
-
[common_1.ICluster.Local]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
72
|
-
};
|