@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/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.1.4",
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.2.0",
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": "^24.3.1",
39
- "dotenv": "^17.2.2",
40
- "mocha": "^11.7.2",
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.0.1",
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"