@streamflow/staking 7.0.0-alpha.10 → 7.0.0-alpha.13
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 +3 -5
- package/dist/cjs/solana/client.js +43 -57
- package/dist/cjs/solana/constants.js +7 -1
- package/dist/cjs/solana/descriptor/idl/reward_pool.json +3 -5
- package/dist/cjs/solana/descriptor/idl/stake_pool.json +60 -262
- package/dist/cjs/solana/{utils.js → lib/fee-amounts.js} +4 -21
- package/dist/cjs/solana/lib/stake-weight.js +19 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +3 -2
- package/dist/esm/solana/client.d.ts +4 -2
- package/dist/esm/solana/client.js +18 -33
- package/dist/esm/solana/constants.d.ts +1 -0
- package/dist/esm/solana/constants.js +6 -0
- package/dist/esm/solana/descriptor/idl/reward_pool.json +3 -5
- package/dist/esm/solana/descriptor/idl/stake_pool.json +60 -262
- package/dist/esm/solana/{utils.d.ts → lib/fee-amounts.d.ts} +0 -2
- package/dist/esm/solana/{utils.js → lib/fee-amounts.js} +2 -14
- package/dist/esm/solana/lib/stake-weight.d.ts +2 -0
- package/dist/esm/solana/lib/stake-weight.js +12 -0
- package/dist/esm/solana/types.d.ts +1 -0
- package/package.json +4 -4
|
@@ -6,7 +6,7 @@ import { REWARD_ENTRY_BYTE_OFFSETS, STAKE_ENTRY_BYTE_OFFSETS, STAKE_POOL_BYTE_OF
|
|
|
6
6
|
import { FeeManager as FeeManagerProgramType } from "./descriptor/fee_manager.js";
|
|
7
7
|
import { RewardPool as RewardPoolProgramType } from "./descriptor/reward_pool.js";
|
|
8
8
|
import { StakePool as StakePoolProgramType } from "./descriptor/stake_pool.js";
|
|
9
|
-
import { ClaimRewardPoolArgs, CreateRewardEntryArgs, CreateRewardPoolArgs, CreateStakePoolArgs, FeeValue, FundPoolArgs, IInteractSolanaExt, RewardEntry, RewardPool, StakeArgs, StakeEntry, StakePool, UnstakeArgs } from "./types.js";
|
|
9
|
+
import { ClaimRewardPoolArgs, CreateRewardEntryArgs, CreateRewardPoolArgs, CreateStakePoolArgs, DefaultFeeValueConfig, FeeValue, FundPoolArgs, IInteractSolanaExt, RewardEntry, RewardPool, StakeArgs, StakeEntry, StakePool, UnstakeArgs } from "./types.js";
|
|
10
10
|
interface Programs {
|
|
11
11
|
stakePoolProgram: Program<StakePoolProgramType>;
|
|
12
12
|
rewardPoolProgram: Program<RewardPoolProgramType>;
|
|
@@ -27,7 +27,7 @@ interface IInitOptions {
|
|
|
27
27
|
sendRate?: number;
|
|
28
28
|
sendThrottler?: PQueue;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
30
|
+
export declare class SolanaStakingClient {
|
|
31
31
|
connection: Connection;
|
|
32
32
|
private commitment;
|
|
33
33
|
private sendThrottler;
|
|
@@ -41,6 +41,8 @@ export default class SolanaStakingClient {
|
|
|
41
41
|
searchStakeEntries(criteria?: Partial<Pick<StakeEntry, keyof typeof STAKE_ENTRY_BYTE_OFFSETS>>): Promise<ProgramAccount<StakeEntry>[]>;
|
|
42
42
|
searchRewardPools(criteria?: Partial<Pick<RewardPool, "stakePool" | "mint">>): Promise<ProgramAccount<RewardPool>[]>;
|
|
43
43
|
searchRewardEntries(criteria: Partial<Pick<RewardEntry, keyof typeof REWARD_ENTRY_BYTE_OFFSETS>>): Promise<ProgramAccount<RewardEntry>[]>;
|
|
44
|
+
getFee(target: string | PublicKey): Promise<FeeValue | DefaultFeeValueConfig>;
|
|
45
|
+
getDefaultFeeValue(): Promise<DefaultFeeValueConfig>;
|
|
44
46
|
getFeeValueIfExists(target: string | PublicKey): Promise<FeeValue | null>;
|
|
45
47
|
createStakePool(data: CreateStakePoolArgs, extParams: IInteractSolanaExt): Promise<CreationResult>;
|
|
46
48
|
prepareCreateStakePoolInstructions({ maxWeight, maxDuration, minDuration, mint, permissionless, nonce, tokenProgramId, }: CreateStakePoolArgs, extParams: IInteractSolanaExt): Promise<{
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Program, parseIdlErrors, translateError
|
|
1
|
+
import { Program, parseIdlErrors, translateError } from "@coral-xyz/anchor";
|
|
2
2
|
import { TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from "@solana/spl-token";
|
|
3
|
-
import { Connection, PublicKey
|
|
4
|
-
import { ContractError, ICluster } from "@streamflow/common";
|
|
5
|
-
import { buildSendThrottler, checkOrCreateAtaBatch, prepareTransaction, signAndExecuteTransaction, } from "@streamflow/common/solana";
|
|
3
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
|
4
|
+
import { ContractError, ICluster, invariant } from "@streamflow/common";
|
|
5
|
+
import { buildSendThrottler, checkOrCreateAtaBatch, getFilters, pk, prepareTransaction, signAndExecuteTransaction, } from "@streamflow/common/solana";
|
|
6
6
|
import { REWARD_ENTRY_BYTE_OFFSETS, REWARD_POOL_BYTE_OFFSETS, REWARD_POOL_PROGRAM_ID, STAKE_ENTRY_BYTE_OFFSETS, STAKE_POOL_BYTE_OFFSETS, STAKE_POOL_PROGRAM_ID, STREAMFLOW_TREASURY_PUBLIC_KEY, } from "./constants.js";
|
|
7
7
|
import FeeManagerIDL from "./descriptor/idl/fee_manager.json";
|
|
8
8
|
import RewardPoolIDL from "./descriptor/idl/reward_pool.json";
|
|
9
9
|
import StakePoolIDL from "./descriptor/idl/stake_pool.json";
|
|
10
|
-
import { deriveFeeValuePDA, deriveRewardPoolPDA, deriveRewardVaultPDA, deriveStakeEntryPDA, deriveStakeMintPDA, deriveStakePoolPDA, } from "./lib/derive-accounts.js";
|
|
11
|
-
export
|
|
10
|
+
import { deriveConfigPDA, deriveFeeValuePDA, deriveRewardPoolPDA, deriveRewardVaultPDA, deriveStakeEntryPDA, deriveStakeMintPDA, deriveStakePoolPDA, } from "./lib/derive-accounts.js";
|
|
11
|
+
export class SolanaStakingClient {
|
|
12
12
|
connection;
|
|
13
13
|
commitment;
|
|
14
14
|
sendThrottler;
|
|
@@ -73,6 +73,18 @@ export default class SolanaStakingClient {
|
|
|
73
73
|
const { rewardPoolProgram } = this.programs;
|
|
74
74
|
return rewardPoolProgram.account.rewardEntry.all(getFilters(criteria, REWARD_ENTRY_BYTE_OFFSETS));
|
|
75
75
|
}
|
|
76
|
+
async getFee(target) {
|
|
77
|
+
const perTargetFee = await this.getFeeValueIfExists(target);
|
|
78
|
+
if (perTargetFee) {
|
|
79
|
+
return perTargetFee;
|
|
80
|
+
}
|
|
81
|
+
return this.getDefaultFeeValue();
|
|
82
|
+
}
|
|
83
|
+
getDefaultFeeValue() {
|
|
84
|
+
const { feeManagerProgram } = this.programs;
|
|
85
|
+
const feeValueKey = deriveConfigPDA(feeManagerProgram.programId);
|
|
86
|
+
return feeManagerProgram.account.config.fetch(feeValueKey);
|
|
87
|
+
}
|
|
76
88
|
getFeeValueIfExists(target) {
|
|
77
89
|
const { feeManagerProgram } = this.programs;
|
|
78
90
|
const feeValueKey = deriveFeeValuePDA(feeManagerProgram.programId, new PublicKey(target));
|
|
@@ -284,30 +296,3 @@ export default class SolanaStakingClient {
|
|
|
284
296
|
}
|
|
285
297
|
}
|
|
286
298
|
}
|
|
287
|
-
function pk(address) {
|
|
288
|
-
return typeof address === "string" ? new PublicKey(address) : address;
|
|
289
|
-
}
|
|
290
|
-
const prefix = "Assertion failed";
|
|
291
|
-
function invariant(condition, message) {
|
|
292
|
-
if (condition) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
const provided = typeof message === "function" ? message() : message;
|
|
296
|
-
const value = provided ? `${prefix}: ${provided}` : prefix;
|
|
297
|
-
throw new Error(value);
|
|
298
|
-
}
|
|
299
|
-
function getFilters(criteria, byteOffsets) {
|
|
300
|
-
return Object.entries(criteria).reduce((acc, [key, value]) => {
|
|
301
|
-
const criteriaKey = key;
|
|
302
|
-
const effectiveByteOffset = byteOffsets[criteriaKey];
|
|
303
|
-
if (criteria[criteriaKey] && effectiveByteOffset) {
|
|
304
|
-
acc.push({
|
|
305
|
-
memcmp: {
|
|
306
|
-
offset: effectiveByteOffset,
|
|
307
|
-
bytes: value.toString(),
|
|
308
|
-
},
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
return acc;
|
|
312
|
-
}, []);
|
|
313
|
-
}
|
|
@@ -56,3 +56,9 @@ export const REWARD_POOL_PROGRAM_ID = {
|
|
|
56
56
|
[ICluster.Testnet]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
|
|
57
57
|
[ICluster.Local]: "RWRDdfRbi3339VgKxTAXg4cjyniF7cbhNbMxZWiSKmj",
|
|
58
58
|
};
|
|
59
|
+
export const FEE_PROGRAM_ID = {
|
|
60
|
+
[ICluster.Mainnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
61
|
+
[ICluster.Devnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
62
|
+
[ICluster.Testnet]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
63
|
+
[ICluster.Local]: "FEELzfBhsWXTNJX53zZcDVfRNoFYZQ6cZA3jLiGVL16V",
|
|
64
|
+
};
|
|
@@ -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
|
-
|
|
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
|
{
|