Skip to content

Commit 9b87d1b

Browse files
authored
Merge pull request #233 from streamflow-finance/v7
off curve ATAs (multisig cases) - allow passing reward pools claim delta
2 parents 7e27392 + 0a0bf72 commit 9b87d1b

File tree

10 files changed

+79
-22
lines changed

10 files changed

+79
-22
lines changed

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"packages": [
33
"packages/*"
44
],
5-
"version": "7.0.2",
5+
"version": "7.0.3",
66
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
77
}

packages/common/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@streamflow/common",
3-
"version": "7.0.2",
3+
"version": "7.0.3",
44
"description": "Common utilities and types used by streamflow packages.",
55
"homepage": "https://github.com/streamflow-finance/js-sdk/",
66
"main": "./dist/esm/index.js",

packages/distributor/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@streamflow/distributor",
3-
"version": "7.0.2",
3+
"version": "7.0.3",
44
"description": "JavaScript SDK to interact with Streamflow Airdrop protocol.",
55
"homepage": "https://github.com/streamflow-finance/js-sdk/",
66
"main": "dist/esm/index.js",

packages/eslint-config/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@streamflow/eslint-config",
3-
"version": "7.0.2",
3+
"version": "7.0.3",
44
"license": "ISC",
55
"main": "index.js",
66
"files": [

packages/staking/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@streamflow/staking",
3-
"version": "7.0.2",
3+
"version": "7.0.3",
44
"description": "JavaScript SDK to interact with Streamflow Staking protocol.",
55
"homepage": "https://github.com/streamflow-finance/js-sdk/",
66
"main": "dist/esm/index.js",
@@ -25,7 +25,7 @@
2525
"pack": "pnpm build && pnpm pack",
2626
"lint": "eslint --fix .",
2727
"test": "vitest",
28-
"prepublishOnly": "npm run lint && npm run build"
28+
"prepublishOnly": "pnpm run lint && pnpm run test run && pnpm run build"
2929
},
3030
"gitHead": "a37306eba0e762af096db642fa22f07194014cfd",
3131
"devDependencies": {

packages/staking/solana/client.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,8 @@ export class SolanaStakingClient {
258258
const staker = extParams.invoker.publicKey;
259259
invariant(staker, "Undefined invoker publicKey");
260260
const mint = deriveStakeMintPDA(stakePoolProgram.programId, pk(stakePool));
261-
const stakeMintAccountKey = getAssociatedTokenAddressSync(mint, staker, false, pk(tokenProgramId));
262-
const poolMintAccountKey = getAssociatedTokenAddressSync(pk(stakePoolMint), staker, false, pk(tokenProgramId));
261+
const stakeMintAccountKey = getAssociatedTokenAddressSync(mint, staker, true, pk(tokenProgramId));
262+
const poolMintAccountKey = getAssociatedTokenAddressSync(pk(stakePoolMint), staker, true, pk(tokenProgramId));
263263
const instruction = await stakePoolProgram.methods
264264
.stake(nonce, amount, duration)
265265
.accounts({
@@ -296,8 +296,8 @@ export class SolanaStakingClient {
296296
invariant(staker, "Undefined invoker publicKey");
297297
const stakeMintKey = deriveStakeMintPDA(stakePoolProgram.programId, pk(stakePool));
298298
const stakeEntryKey = deriveStakeEntryPDA(stakePoolProgram.programId, pk(stakePool), staker, nonce);
299-
const poolMintAccountKey = getAssociatedTokenAddressSync(pk(stakePoolMint), staker, false, pk(tokenProgramId));
300-
const stakeMintAccountKey = getAssociatedTokenAddressSync(stakeMintKey, staker, false, pk(tokenProgramId));
299+
const poolMintAccountKey = getAssociatedTokenAddressSync(pk(stakePoolMint), staker, true, pk(tokenProgramId));
300+
const stakeMintAccountKey = getAssociatedTokenAddressSync(stakeMintKey, staker, true, pk(tokenProgramId));
301301
const instruction = await stakePoolProgram.methods
302302
.unstake()
303303
.accounts({
@@ -331,6 +331,7 @@ export class SolanaStakingClient {
331331
rewardMint,
332332
permissionless = false,
333333
stakePool,
334+
lastClaimPeriodOpt,
334335
tokenProgramId = TOKEN_PROGRAM_ID,
335336
}: CreateRewardPoolArgs,
336337
extParams: IInteractSolanaExt,
@@ -339,7 +340,7 @@ export class SolanaStakingClient {
339340
const creator = extParams.invoker.publicKey;
340341
invariant(creator, "Undefined invoker publicKey");
341342
const instruction = await rewardPoolProgram.methods
342-
.createPool(nonce, rewardAmount, rewardPeriod, permissionless)
343+
.createPool(nonce, rewardAmount, rewardPeriod, permissionless, lastClaimPeriodOpt)
343344
.accounts({
344345
creator,
345346
stakePool,
@@ -377,7 +378,7 @@ export class SolanaStakingClient {
377378
rewardPool: deriveRewardPoolPDA(rewardPoolProgram.programId, pk(stakePool), pk(rewardMint), rewardPoolNonce),
378379
claimant: staker,
379380
tokenProgram: tokenProgramId,
380-
to: getAssociatedTokenAddressSync(pk(rewardMint), staker, false, pk(tokenProgramId)),
381+
to: getAssociatedTokenAddressSync(pk(rewardMint), staker, true, pk(tokenProgramId)),
381382
})
382383
.instruction();
383384

@@ -420,7 +421,7 @@ export class SolanaStakingClient {
420421
.accountsPartial({
421422
funder: staker,
422423
rewardPool: rewardPoolPda,
423-
from: getAssociatedTokenAddressSync(rewardMintPk, staker, false, tokenProgramPk),
424+
from: getAssociatedTokenAddressSync(rewardMintPk, staker, true, tokenProgramPk),
424425
tokenProgram: tokenProgramId,
425426
vault: deriveRewardVaultPDA(rewardPoolProgram.programId, rewardPoolPda),
426427
mint: rewardMint,
@@ -442,7 +443,7 @@ export class SolanaStakingClient {
442443
}
443444

444445
async prepareCreateRewardEntryInstructions(
445-
{ stakePoolMint, stakePool, rewardPoolNonce, depositNonce }: CreateRewardEntryArgs,
446+
{ stakePool, rewardPoolNonce, depositNonce, rewardMint }: CreateRewardEntryArgs,
446447
extParams: IInteractSolanaExt,
447448
) {
448449
const { stakePoolProgram, rewardPoolProgram } = this.programs;
@@ -454,7 +455,7 @@ export class SolanaStakingClient {
454455
payer: staker,
455456
authority: staker,
456457
stakeEntry: deriveStakeEntryPDA(stakePoolProgram.programId, pk(stakePool), staker, depositNonce),
457-
rewardPool: deriveRewardPoolPDA(rewardPoolProgram.programId, pk(stakePool), pk(stakePoolMint), rewardPoolNonce),
458+
rewardPool: deriveRewardPoolPDA(rewardPoolProgram.programId, pk(stakePool), pk(rewardMint), rewardPoolNonce),
458459
})
459460
.instruction();
460461

@@ -472,7 +473,7 @@ export class SolanaStakingClient {
472473
}
473474

474475
async prepareUpdateRewardPoolInstructions(
475-
{ rewardPool, rewardAmount, rewardPeriod }: UpdateRewardPoolArgs,
476+
{ rewardPool, rewardAmount, rewardPeriod, stakePool }: UpdateRewardPoolArgs,
476477
extParams: IInteractSolanaExt,
477478
) {
478479
const { rewardPoolProgram } = this.programs;
@@ -481,6 +482,7 @@ export class SolanaStakingClient {
481482
const instruction = await rewardPoolProgram.methods
482483
.updatePool(rewardAmount, rewardPeriod)
483484
.accountsPartial({
485+
stakePool,
484486
authority: invoker,
485487
rewardPool,
486488
})

packages/staking/solana/descriptor/idl/reward_pool.json

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,12 @@
278278
{
279279
"name": "permissionless",
280280
"type": "bool"
281+
},
282+
{
283+
"name": "last_claim_period_opt",
284+
"type": {
285+
"option": "u64"
286+
}
281287
}
282288
]
283289
},
@@ -407,9 +413,14 @@
407413
"signer": true,
408414
"relations": ["reward_pool"]
409415
},
416+
{
417+
"name": "stake_pool",
418+
"docs": ["Stake Pool to Which Reward Pool belongs"],
419+
"relations": ["reward_pool"]
420+
},
410421
{
411422
"name": "reward_pool",
412-
"docs": ["Stake Pool"],
423+
"docs": ["Reward Pool"],
413424
"writable": true
414425
}
415426
],
@@ -520,6 +531,16 @@
520531
"code": 6012,
521532
"name": "RewardPoolDrained",
522533
"msg": "Reward Pool does not have enough Rewards for Claiming"
534+
},
535+
{
536+
"code": 6013,
537+
"name": "UpdateTooSoon",
538+
"msg": "Repeated update can not happen sooner than the stake pool max duration"
539+
},
540+
{
541+
"code": 6014,
542+
"name": "InvalidLastClaimPeriod",
543+
"msg": "Invalid last claim period provided"
523544
}
524545
],
525546
"types": [
@@ -731,11 +752,16 @@
731752
"docs": ["Time when Reward Pool was created"],
732753
"type": "u64"
733754
},
755+
{
756+
"name": "last_claim_period",
757+
"docs": ["For how much seconds after unstake user should be able to claim rewards"],
758+
"type": "u64"
759+
},
734760
{
735761
"name": "_buffer",
736762
"docs": ["Buffer for additional fields"],
737763
"type": {
738-
"array": ["u8", 56]
764+
"array": ["u8", 48]
739765
}
740766
}
741767
]

packages/staking/solana/descriptor/reward_pool.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,12 @@ export type RewardPool = {
285285
name: "permissionless";
286286
type: "bool";
287287
},
288+
{
289+
name: "lastClaimPeriodOpt";
290+
type: {
291+
option: "u64";
292+
};
293+
},
288294
];
289295
},
290296
{
@@ -443,9 +449,14 @@ export type RewardPool = {
443449
signer: true;
444450
relations: ["rewardPool"];
445451
},
452+
{
453+
name: "stakePool";
454+
docs: ["Stake Pool to Which Reward Pool belongs"];
455+
relations: ["rewardPool"];
456+
},
446457
{
447458
name: "rewardPool";
448-
docs: ["Stake Pool"];
459+
docs: ["Reward Pool"];
449460
writable: true;
450461
},
451462
];
@@ -557,6 +568,16 @@ export type RewardPool = {
557568
name: "rewardPoolDrained";
558569
msg: "Reward Pool does not have enough Rewards for Claiming";
559570
},
571+
{
572+
code: 6013;
573+
name: "updateTooSoon";
574+
msg: "Repeated update can not happen sooner than the stake pool max duration";
575+
},
576+
{
577+
code: 6014;
578+
name: "invalidLastClaimPeriod";
579+
msg: "Invalid last claim period provided";
580+
},
560581
];
561582
types: [
562583
{
@@ -767,11 +788,16 @@ export type RewardPool = {
767788
docs: ["Time when Reward Pool was created"];
768789
type: "u64";
769790
},
791+
{
792+
name: "lastClaimPeriod";
793+
docs: ["For how much seconds after unstake user should be able to claim rewards"];
794+
type: "u64";
795+
},
770796
{
771797
name: "buffer";
772798
docs: ["Buffer for additional fields"];
773799
type: {
774-
array: ["u8", 56];
800+
array: ["u8", 48];
775801
};
776802
},
777803
];

packages/staking/solana/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export interface FundPoolArgs extends BaseStakePoolArgs, TokenProgram {
5151
export interface CreateRewardEntryArgs extends BaseStakePoolArgs, TokenProgram {
5252
depositNonce: number;
5353
rewardPoolNonce: number;
54+
rewardMint: Address;
5455
}
5556

5657
export interface CreateRewardPoolArgs extends BaseStakePoolArgs, TokenProgram {
@@ -60,9 +61,11 @@ export interface CreateRewardPoolArgs extends BaseStakePoolArgs, TokenProgram {
6061
rewardAmount: BN;
6162
rewardPeriod: BN;
6263
permissionless: boolean;
64+
lastClaimPeriodOpt: BN | null;
6365
}
6466

6567
export interface UpdateRewardPoolArgs {
68+
stakePool: Address;
6669
rewardAmount: BN | null;
6770
rewardPeriod: BN | null;
6871
rewardPool: Address;

packages/stream/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@streamflow/stream",
3-
"version": "7.0.2",
3+
"version": "7.0.3",
44
"description": "JavaScript SDK to interact with Streamflow protocol.",
55
"homepage": "https://github.com/streamflow-finance/js-sdk/",
66
"main": "./dist/esm/index.js",
@@ -40,7 +40,7 @@
4040
"pack": "pnpm build && pnpm pack",
4141
"test": "vitest",
4242
"lint": "eslint --fix .",
43-
"prepublishOnly": "npm run lint && npm test && npm run build"
43+
"prepublishOnly": "pnpm run lint && pnpm run test run && pnpm run build"
4444
},
4545
"gitHead": "a37306eba0e762af096db642fa22f07194014cfd",
4646
"devDependencies": {

0 commit comments

Comments
 (0)