@zebec-network/zebec-stake-sdk 1.1.4 → 1.2.0
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/artifacts/zebec_stake_v1.d.ts +907 -561
- package/dist/artifacts/zebec_stake_v1.json +814 -48
- package/dist/service.d.ts +15 -0
- package/dist/service.js +38 -0
- package/package.json +7 -7
package/dist/service.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export declare class StakeService {
|
|
|
44
44
|
constructor(provider: Provider, program: Program<ZebecStakeIdlV1>, network: "mainnet-beta" | "devnet");
|
|
45
45
|
private _createPayload;
|
|
46
46
|
getInitLockupInstruction(creator: PublicKey, lockup: PublicKey, stakeToken: PublicKey, rewardToken: PublicKey, rewardVault: PublicKey, stakeVault: PublicKey, data: InitLockupInstructionData): Promise<TransactionInstruction>;
|
|
47
|
+
getUpdateLockupInstruction(updater: PublicKey, lockup: PublicKey, data: UpdateLockupInstructionData): Promise<TransactionInstruction>;
|
|
47
48
|
getStakeInstruction(feePayer: PublicKey, lockup: PublicKey, stakeToken: PublicKey, stakeVault: PublicKey, staker: PublicKey, userNonce: PublicKey, stakePda: PublicKey, stakeVaultTokenAccount: PublicKey, data: StakeInstructionData): Promise<TransactionInstruction>;
|
|
48
49
|
getUnstakeInstruction(feePayer: PublicKey, feeVault: PublicKey, lockup: PublicKey, stakePda: PublicKey, rewardToken: PublicKey, rewardVault: PublicKey, stakeToken: PublicKey, stakeVault: PublicKey, staker: PublicKey, stakerTokenAccount: PublicKey, nonce: BN): Promise<TransactionInstruction>;
|
|
49
50
|
initLockup(params: {
|
|
@@ -56,6 +57,14 @@ export declare class StakeService {
|
|
|
56
57
|
rewardSchemes: RewardScheme[];
|
|
57
58
|
minimumStake: Numeric;
|
|
58
59
|
}): Promise<TransactionPayload>;
|
|
60
|
+
updateLockup(params: {
|
|
61
|
+
lockupName: string;
|
|
62
|
+
updater?: Address;
|
|
63
|
+
fee: Numeric;
|
|
64
|
+
feeVault: Address;
|
|
65
|
+
rewardSchemes: RewardScheme[];
|
|
66
|
+
minimumStake: Numeric;
|
|
67
|
+
}): Promise<TransactionPayload>;
|
|
59
68
|
stake(params: {
|
|
60
69
|
lockupName: string;
|
|
61
70
|
feePayer?: Address;
|
|
@@ -90,6 +99,12 @@ export type InitLockupInstructionData = {
|
|
|
90
99
|
name: string;
|
|
91
100
|
minimumStake: BN;
|
|
92
101
|
};
|
|
102
|
+
export type UpdateLockupInstructionData = {
|
|
103
|
+
rewardSchemes: ParsedRewardScheme[];
|
|
104
|
+
fee: BN;
|
|
105
|
+
feeVault: PublicKey;
|
|
106
|
+
minimumStake: BN;
|
|
107
|
+
};
|
|
93
108
|
export type ParsedRewardScheme = {
|
|
94
109
|
duration: BN;
|
|
95
110
|
reward: BN;
|
package/dist/service.js
CHANGED
|
@@ -147,6 +147,17 @@ class StakeService {
|
|
|
147
147
|
})
|
|
148
148
|
.instruction();
|
|
149
149
|
}
|
|
150
|
+
async getUpdateLockupInstruction(updater, lockup, data) {
|
|
151
|
+
return this.program.methods.updateLockup({
|
|
152
|
+
durationMap: data.rewardSchemes,
|
|
153
|
+
fee: data.fee,
|
|
154
|
+
feeVault: data.feeVault,
|
|
155
|
+
minimumStake: data.minimumStake
|
|
156
|
+
}).accountsPartial({
|
|
157
|
+
updater,
|
|
158
|
+
lockup,
|
|
159
|
+
}).instruction();
|
|
160
|
+
}
|
|
150
161
|
async getStakeInstruction(feePayer, lockup, stakeToken, stakeVault, staker, userNonce, stakePda, stakeVaultTokenAccount, data) {
|
|
151
162
|
return this.program.methods
|
|
152
163
|
.stakeZbcn(data)
|
|
@@ -209,6 +220,33 @@ class StakeService {
|
|
|
209
220
|
});
|
|
210
221
|
return this._createPayload(creator, [instruction]);
|
|
211
222
|
}
|
|
223
|
+
async updateLockup(params) {
|
|
224
|
+
const updater = params.updater ? (0, anchor_1.translateAddress)(params.updater) : this.provider.publicKey;
|
|
225
|
+
if (!updater) {
|
|
226
|
+
throw new Error("MissingArgument: Please provide either updater address or publicKey in provider");
|
|
227
|
+
}
|
|
228
|
+
const lockup = (0, pda_1.deriveLockupAddress)(params.lockupName, this.programId);
|
|
229
|
+
const lockupInfo = await this.program.account.lockup.fetch(lockup, this.connection.commitment);
|
|
230
|
+
const stakeToken = lockupInfo.stakedToken.tokenAddress;
|
|
231
|
+
const feeVault = (0, anchor_1.translateAddress)(params.feeVault);
|
|
232
|
+
const stakeTokenDecimals = await (0, solana_common_1.getMintDecimals)(this.connection, stakeToken);
|
|
233
|
+
const UNITS_PER_STAKE_TOKEN = constants_1.TEN_BIGNUM.pow(stakeTokenDecimals);
|
|
234
|
+
const fee = new anchor_1.BN((0, bignumber_js_1.BigNumber)(params.fee).times(UNITS_PER_STAKE_TOKEN).toFixed(0));
|
|
235
|
+
const minimumStake = new anchor_1.BN((0, bignumber_js_1.BigNumber)(params.minimumStake).times(UNITS_PER_STAKE_TOKEN).toFixed(0));
|
|
236
|
+
const rewardSchemes = params.rewardSchemes.map((value) => {
|
|
237
|
+
return {
|
|
238
|
+
duration: new anchor_1.BN(value.duration),
|
|
239
|
+
reward: new anchor_1.BN((0, core_utils_1.percentToBps)(value.rewardRate)),
|
|
240
|
+
};
|
|
241
|
+
});
|
|
242
|
+
const instruction = await this.getUpdateLockupInstruction(updater, lockup, {
|
|
243
|
+
fee,
|
|
244
|
+
feeVault,
|
|
245
|
+
minimumStake,
|
|
246
|
+
rewardSchemes
|
|
247
|
+
});
|
|
248
|
+
return this._createPayload(updater, [instruction]);
|
|
249
|
+
}
|
|
212
250
|
async stake(params) {
|
|
213
251
|
const staker = params.staker ? (0, anchor_1.translateAddress)(params.staker) : this.provider.publicKey;
|
|
214
252
|
if (!staker) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zebec-network/zebec-stake-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "An SDK for zebec network stake solana program",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,20 +26,20 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@coral-xyz/anchor": "^0.31.1",
|
|
29
|
-
"@solana/web3.js": "1.98.2",
|
|
29
|
+
"@solana/web3.js": "^1.98.2",
|
|
30
30
|
"@zebec-network/core-utils": "^1.1.1",
|
|
31
|
-
"@zebec-network/solana-common": "^2.
|
|
31
|
+
"@zebec-network/solana-common": "^2.3.0",
|
|
32
32
|
"bignumber.js": "^9.3.1",
|
|
33
33
|
"buffer": "^6.0.3"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/bn.js": "^5.2.0",
|
|
37
37
|
"@types/mocha": "^10.0.10",
|
|
38
|
-
"@types/node": "^
|
|
39
|
-
"dotenv": "^17.2.
|
|
40
|
-
"mocha": "^11.7.
|
|
38
|
+
"@types/node": "^25.0.3",
|
|
39
|
+
"dotenv": "^17.2.3",
|
|
40
|
+
"mocha": "^11.7.5",
|
|
41
41
|
"prettier": "^3.6.2",
|
|
42
|
-
"rimraf": "^6.
|
|
42
|
+
"rimraf": "^6.1.2",
|
|
43
43
|
"ts-mocha": "^11.1.0",
|
|
44
44
|
"ts-node": "^10.9.2",
|
|
45
45
|
"typescript": "^5.9.2"
|