@streamflow/staking 7.0.0-alpha.11 → 7.0.0-alpha.14

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.js CHANGED
@@ -25,15 +25,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  __setModuleDefault(result, mod);
26
26
  return result;
27
27
  };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
28
  Object.defineProperty(exports, "__esModule", { value: true });
32
29
  exports.constants = exports.SolanaStakingClient = void 0;
33
30
  var client_js_1 = require("./solana/client.js");
34
- Object.defineProperty(exports, "SolanaStakingClient", { enumerable: true, get: function () { return __importDefault(client_js_1).default; } });
35
- __exportStar(require("./solana/utils.js"), exports);
31
+ Object.defineProperty(exports, "SolanaStakingClient", { enumerable: true, get: function () { return client_js_1.SolanaStakingClient; } });
36
32
  __exportStar(require("./solana/types.js"), exports);
37
33
  __exportStar(require("./solana/lib/derive-accounts.js"), exports);
38
34
  __exportStar(require("./solana/lib/rewards.js"), exports);
35
+ __exportStar(require("./solana/lib/fee-amounts.js"), exports);
36
+ __exportStar(require("./solana/lib/stake-weight.js"), exports);
39
37
  exports.constants = __importStar(require("./solana/constants.js"));
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SolanaStakingClient = void 0;
6
7
  const anchor_1 = require("@coral-xyz/anchor");
7
8
  const spl_token_1 = require("@solana/spl-token");
8
9
  const web3_js_1 = require("@solana/web3.js");
@@ -44,7 +45,7 @@ class SolanaStakingClient {
44
45
  }
45
46
  getCurrentProgramId(programKey) {
46
47
  const program = this.programs[programKey];
47
- invariant(program, `Program ${programKey} is not found`);
48
+ (0, common_1.invariant)(program, `Program ${programKey} is not found`);
48
49
  return program.programId;
49
50
  }
50
51
  getCommitment() {
@@ -56,7 +57,7 @@ class SolanaStakingClient {
56
57
  }
57
58
  async searchStakePools(criteria = {}) {
58
59
  const { stakePoolProgram } = this.programs;
59
- return stakePoolProgram.account.stakePool.all(getFilters(criteria, constants_js_1.STAKE_POOL_BYTE_OFFSETS));
60
+ return stakePoolProgram.account.stakePool.all((0, solana_1.getFilters)(criteria, constants_js_1.STAKE_POOL_BYTE_OFFSETS));
60
61
  }
61
62
  async getStakeEntry(id) {
62
63
  const { stakePoolProgram } = this.programs;
@@ -64,15 +65,27 @@ class SolanaStakingClient {
64
65
  }
65
66
  async searchStakeEntries(criteria = {}) {
66
67
  const { stakePoolProgram } = this.programs;
67
- return stakePoolProgram.account.stakeEntry.all(getFilters(criteria, constants_js_1.STAKE_ENTRY_BYTE_OFFSETS));
68
+ return stakePoolProgram.account.stakeEntry.all((0, solana_1.getFilters)(criteria, constants_js_1.STAKE_ENTRY_BYTE_OFFSETS));
68
69
  }
69
70
  async searchRewardPools(criteria = {}) {
70
71
  const { rewardPoolProgram } = this.programs;
71
- return rewardPoolProgram.account.rewardPool.all(getFilters(criteria, constants_js_1.REWARD_POOL_BYTE_OFFSETS));
72
+ return rewardPoolProgram.account.rewardPool.all((0, solana_1.getFilters)(criteria, constants_js_1.REWARD_POOL_BYTE_OFFSETS));
72
73
  }
73
74
  async searchRewardEntries(criteria) {
74
75
  const { rewardPoolProgram } = this.programs;
75
- return rewardPoolProgram.account.rewardEntry.all(getFilters(criteria, constants_js_1.REWARD_ENTRY_BYTE_OFFSETS));
76
+ return rewardPoolProgram.account.rewardEntry.all((0, solana_1.getFilters)(criteria, constants_js_1.REWARD_ENTRY_BYTE_OFFSETS));
77
+ }
78
+ async getFee(target) {
79
+ const perTargetFee = await this.getFeeValueIfExists(target);
80
+ if (perTargetFee) {
81
+ return perTargetFee;
82
+ }
83
+ return this.getDefaultFeeValue();
84
+ }
85
+ getDefaultFeeValue() {
86
+ const { feeManagerProgram } = this.programs;
87
+ const feeValueKey = (0, derive_accounts_js_1.deriveConfigPDA)(feeManagerProgram.programId);
88
+ return feeManagerProgram.account.config.fetch(feeValueKey);
76
89
  }
77
90
  getFeeValueIfExists(target) {
78
91
  const { feeManagerProgram } = this.programs;
@@ -91,7 +104,7 @@ class SolanaStakingClient {
91
104
  async prepareCreateStakePoolInstructions({ maxWeight, maxDuration, minDuration, mint, permissionless = false, nonce, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, }, extParams) {
92
105
  const { stakePoolProgram } = this.programs;
93
106
  const creator = extParams.invoker.publicKey;
94
- invariant(creator, "Undefined invoker publicKey");
107
+ (0, common_1.invariant)(creator, "Undefined invoker publicKey");
95
108
  const createInstruction = await stakePoolProgram.methods
96
109
  .createPool(nonce, maxWeight, minDuration, maxDuration, permissionless)
97
110
  .accounts({
@@ -100,7 +113,7 @@ class SolanaStakingClient {
100
113
  tokenProgram: tokenProgramId,
101
114
  })
102
115
  .instruction();
103
- const stakePoolPDA = (0, derive_accounts_js_1.deriveStakePoolPDA)(stakePoolProgram.programId, pk(mint), creator, nonce);
116
+ const stakePoolPDA = (0, derive_accounts_js_1.deriveStakePoolPDA)(stakePoolProgram.programId, (0, solana_1.pk)(mint), creator, nonce);
104
117
  return { ixs: [createInstruction], publicKey: stakePoolPDA };
105
118
  }
106
119
  async stake(data, extParams) {
@@ -114,10 +127,10 @@ class SolanaStakingClient {
114
127
  async prepareStakeInstructions({ nonce, amount, duration, stakePool, stakePoolMint, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID }, extParams) {
115
128
  const { stakePoolProgram } = this.programs;
116
129
  const staker = extParams.invoker.publicKey;
117
- invariant(staker, "Undefined invoker publicKey");
118
- const mint = (0, derive_accounts_js_1.deriveStakeMintPDA)(stakePoolProgram.programId, pk(stakePool));
119
- const stakeMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, staker, false, pk(tokenProgramId));
120
- const poolMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(pk(stakePoolMint), staker, false, pk(tokenProgramId));
130
+ (0, common_1.invariant)(staker, "Undefined invoker publicKey");
131
+ const mint = (0, derive_accounts_js_1.deriveStakeMintPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool));
132
+ const stakeMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, staker, false, (0, solana_1.pk)(tokenProgramId));
133
+ const poolMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)((0, solana_1.pk)(stakePoolMint), staker, false, (0, solana_1.pk)(tokenProgramId));
121
134
  const instruction = await stakePoolProgram.methods
122
135
  .stake(nonce, amount, duration)
123
136
  .accounts({
@@ -142,11 +155,11 @@ class SolanaStakingClient {
142
155
  async prepareUnstakeInstructions({ stakePool, stakePoolMint, nonce, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID }, extParams) {
143
156
  const { stakePoolProgram } = this.programs;
144
157
  const staker = extParams.invoker.publicKey;
145
- invariant(staker, "Undefined invoker publicKey");
146
- const stakeMintKey = (0, derive_accounts_js_1.deriveStakeMintPDA)(stakePoolProgram.programId, pk(stakePool));
147
- const stakeEntryKey = (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, pk(stakePool), staker, nonce);
148
- const poolMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(pk(stakePoolMint), staker, false, pk(tokenProgramId));
149
- const stakeMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(stakeMintKey, staker, false, pk(tokenProgramId));
158
+ (0, common_1.invariant)(staker, "Undefined invoker publicKey");
159
+ const stakeMintKey = (0, derive_accounts_js_1.deriveStakeMintPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool));
160
+ const stakeEntryKey = (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool), staker, nonce);
161
+ const poolMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)((0, solana_1.pk)(stakePoolMint), staker, false, (0, solana_1.pk)(tokenProgramId));
162
+ const stakeMintAccountKey = (0, spl_token_1.getAssociatedTokenAddressSync)(stakeMintKey, staker, false, (0, solana_1.pk)(tokenProgramId));
150
163
  const instruction = await stakePoolProgram.methods
151
164
  .unstake()
152
165
  .accounts({
@@ -171,7 +184,7 @@ class SolanaStakingClient {
171
184
  async prepareCreateRewardPoolInstructions({ nonce, rewardAmount, rewardPeriod, rewardMint, permissionless = false, stakePool, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, }, extParams) {
172
185
  const { rewardPoolProgram } = this.programs;
173
186
  const creator = extParams.invoker.publicKey;
174
- invariant(creator, "Undefined invoker publicKey");
187
+ (0, common_1.invariant)(creator, "Undefined invoker publicKey");
175
188
  const instruction = await rewardPoolProgram.methods
176
189
  .createPool(nonce, rewardAmount, rewardPeriod, permissionless)
177
190
  .accounts({
@@ -181,7 +194,7 @@ class SolanaStakingClient {
181
194
  tokenProgram: tokenProgramId,
182
195
  })
183
196
  .instruction();
184
- const rewardPoolKey = (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, pk(stakePool), pk(rewardMint), nonce);
197
+ const rewardPoolKey = (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), (0, solana_1.pk)(rewardMint), nonce);
185
198
  return { publicKey: rewardPoolKey, ixs: [instruction] };
186
199
  }
187
200
  async claimRewards(data, extParams) {
@@ -195,15 +208,15 @@ class SolanaStakingClient {
195
208
  async prepareClaimRewardsInstructions({ rewardPoolNonce, depositNonce, stakePool, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, rewardMint }, extParams) {
196
209
  const { stakePoolProgram, rewardPoolProgram } = this.programs;
197
210
  const staker = extParams.invoker.publicKey;
198
- invariant(staker, "Undefined invoker publicKey");
211
+ (0, common_1.invariant)(staker, "Undefined invoker publicKey");
199
212
  const instruction = await rewardPoolProgram.methods
200
213
  .claimRewards()
201
214
  .accounts({
202
- stakeEntry: (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, pk(stakePool), staker, depositNonce),
203
- rewardPool: (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, pk(stakePool), pk(rewardMint), rewardPoolNonce),
215
+ stakeEntry: (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool), staker, depositNonce),
216
+ rewardPool: (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), (0, solana_1.pk)(rewardMint), rewardPoolNonce),
204
217
  claimant: staker,
205
218
  tokenProgram: tokenProgramId,
206
- to: (0, spl_token_1.getAssociatedTokenAddressSync)(pk(rewardMint), staker, false, pk(tokenProgramId)),
219
+ to: (0, spl_token_1.getAssociatedTokenAddressSync)((0, solana_1.pk)(rewardMint), staker, false, (0, solana_1.pk)(tokenProgramId)),
207
220
  })
208
221
  .instruction();
209
222
  return { ixs: [instruction] };
@@ -219,14 +232,14 @@ class SolanaStakingClient {
219
232
  async prepareFundPoolInstructions({ amount, tokenProgramId = spl_token_1.TOKEN_PROGRAM_ID, rewardMint, stakePool, feeValue, nonce }, extParams) {
220
233
  const { rewardPoolProgram } = this.programs;
221
234
  const staker = extParams.invoker.publicKey;
222
- invariant(staker, "Undefined invoker publicKey");
235
+ (0, common_1.invariant)(staker, "Undefined invoker publicKey");
223
236
  const existingFee = await this.getFeeValueIfExists(staker);
224
- const rewardMintPk = pk(rewardMint);
225
- const tokenProgramPk = pk(tokenProgramId);
237
+ const rewardMintPk = (0, solana_1.pk)(rewardMint);
238
+ const tokenProgramPk = (0, solana_1.pk)(tokenProgramId);
226
239
  const treasuryATA = !existingFee || existingFee.streamflowFee.gtn(0)
227
240
  ? await (0, solana_1.checkOrCreateAtaBatch)(this.connection, [constants_js_1.STREAMFLOW_TREASURY_PUBLIC_KEY], rewardMintPk, extParams.invoker, tokenProgramPk)
228
241
  : null;
229
- const rewardPoolPda = (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, pk(stakePool), rewardMintPk, nonce);
242
+ const rewardPoolPda = (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), rewardMintPk, nonce);
230
243
  const instruction = await rewardPoolProgram.methods
231
244
  .fundPool(amount)
232
245
  .accountsPartial({
@@ -252,14 +265,14 @@ class SolanaStakingClient {
252
265
  async prepareCreateRewardEntryInstructions({ stakePoolMint, stakePool, rewardPoolNonce, depositNonce }, extParams) {
253
266
  const { stakePoolProgram, rewardPoolProgram } = this.programs;
254
267
  const staker = extParams.invoker.publicKey;
255
- invariant(staker, "Undefined invoker publicKey");
268
+ (0, common_1.invariant)(staker, "Undefined invoker publicKey");
256
269
  const instruction = await rewardPoolProgram.methods
257
270
  .createEntry()
258
271
  .accounts({
259
272
  payer: staker,
260
273
  authority: staker,
261
- stakeEntry: (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, pk(stakePool), staker, depositNonce),
262
- rewardPool: (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, pk(stakePool), pk(stakePoolMint), rewardPoolNonce),
274
+ stakeEntry: (0, derive_accounts_js_1.deriveStakeEntryPDA)(stakePoolProgram.programId, (0, solana_1.pk)(stakePool), staker, depositNonce),
275
+ rewardPool: (0, derive_accounts_js_1.deriveRewardPoolPDA)(rewardPoolProgram.programId, (0, solana_1.pk)(stakePool), (0, solana_1.pk)(stakePoolMint), rewardPoolNonce),
263
276
  })
264
277
  .instruction();
265
278
  return { ixs: [instruction] };
@@ -285,31 +298,4 @@ class SolanaStakingClient {
285
298
  }
286
299
  }
287
300
  }
288
- exports.default = SolanaStakingClient;
289
- function pk(address) {
290
- return typeof address === "string" ? new web3_js_1.PublicKey(address) : address;
291
- }
292
- const prefix = "Assertion failed";
293
- function invariant(condition, message) {
294
- if (condition) {
295
- return;
296
- }
297
- const provided = typeof message === "function" ? message() : message;
298
- const value = provided ? `${prefix}: ${provided}` : prefix;
299
- throw new Error(value);
300
- }
301
- function getFilters(criteria, byteOffsets) {
302
- return Object.entries(criteria).reduce((acc, [key, value]) => {
303
- const criteriaKey = key;
304
- const effectiveByteOffset = byteOffsets[criteriaKey];
305
- if (criteria[criteriaKey] && effectiveByteOffset) {
306
- acc.push({
307
- memcmp: {
308
- offset: effectiveByteOffset,
309
- bytes: value.toString(),
310
- },
311
- });
312
- }
313
- return acc;
314
- }, []);
315
- }
301
+ exports.SolanaStakingClient = SolanaStakingClient;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- 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_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.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;
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_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.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
4
  const anchor_1 = require("@coral-xyz/anchor");
5
5
  const common_1 = require("@streamflow/common");
6
6
  const web3_js_1 = require("@solana/web3.js");
@@ -59,3 +59,9 @@ exports.REWARD_POOL_PROGRAM_ID = {
59
59
  [common_1.ICluster.Testnet]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
60
60
  [common_1.ICluster.Local]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
61
61
  };
62
+ exports.FEE_PROGRAM_ID = {
63
+ [common_1.ICluster.Mainnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
64
+ [common_1.ICluster.Devnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
65
+ [common_1.ICluster.Testnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
66
+ [common_1.ICluster.Local]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
67
+ };
@@ -338,8 +338,8 @@
338
338
  "program": {
339
339
  "kind": "const",
340
340
  "value": [
341
- 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218,
342
- 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89
341
+ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16,
342
+ 132, 4, 142, 123, 216, 219, 233, 248, 89
343
343
  ]
344
344
  }
345
345
  }
@@ -778,9 +778,7 @@
778
778
  },
779
779
  {
780
780
  "name": "effective_amount",
781
- "docs": [
782
- "Effective Amount staked, does not equal to deposited amount, accounts for Stake Weight"
783
- ],
781
+ "docs": ["Effective Amount staked, does not equal to deposited amount, accounts for Stake Weight"],
784
782
  "type": "u128"
785
783
  },
786
784
  {