@ignitionfi/spl-stake-pool 1.1.25 → 1.1.26
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/index.browser.cjs.js +10 -23
- package/dist/index.browser.cjs.js.map +1 -1
- package/dist/index.browser.esm.js +10 -23
- package/dist/index.browser.esm.js.map +1 -1
- package/dist/index.cjs.js +10 -23
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +10 -23
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +10 -23
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +1 -1
- package/dist/index.iife.min.js.map +1 -1
- package/dist/instructions.d.ts +2 -3
- package/package.json +1 -1
- package/src/instructions.ts +9 -25
- package/src/utils/stake.ts +3 -3
|
@@ -832,7 +832,7 @@ async function prepareWithdrawAccounts(connection, stakePool, stakePoolAddress,
|
|
|
832
832
|
const stakePoolProgramId = getStakePoolProgramId(connection.rpcEndpoint);
|
|
833
833
|
const validatorListAcc = await connection.getAccountInfo(stakePool.validatorList);
|
|
834
834
|
const validatorList = ValidatorListLayout.decode(validatorListAcc === null || validatorListAcc === void 0 ? void 0 : validatorListAcc.data);
|
|
835
|
-
if (!(validatorList === null || validatorList === void 0 ? void 0 : validatorList.validators) || (validatorList === null || validatorList === void 0 ? void 0 : validatorList.validators.length)
|
|
835
|
+
if (!(validatorList === null || validatorList === void 0 ? void 0 : validatorList.validators) || (validatorList === null || validatorList === void 0 ? void 0 : validatorList.validators.length) === 0) {
|
|
836
836
|
throw new Error('No accounts found');
|
|
837
837
|
}
|
|
838
838
|
const minBalanceForRentExemption = await connection.getMinimumBalanceForRentExemption(web3_js.StakeProgram.space);
|
|
@@ -887,9 +887,9 @@ async function prepareWithdrawAccounts(connection, stakePool, stakePoolAddress,
|
|
|
887
887
|
denominator: fee.denominator,
|
|
888
888
|
};
|
|
889
889
|
for (const type of ['preferred', 'active', 'transient', 'reserve']) {
|
|
890
|
-
const filteredAccounts = accounts.filter(a => a.type
|
|
890
|
+
const filteredAccounts = accounts.filter(a => a.type === type);
|
|
891
891
|
for (const { stakeAddress, voteAddress, lamports } of filteredAccounts) {
|
|
892
|
-
if (lamports.lte(minBalance) && type
|
|
892
|
+
if (lamports.lte(minBalance) && type === 'transient') {
|
|
893
893
|
continue;
|
|
894
894
|
}
|
|
895
895
|
let availableForWithdrawal = calcPoolTokensForDeposit(stakePool, lamports);
|
|
@@ -1664,38 +1664,25 @@ class StakePoolInstruction {
|
|
|
1664
1664
|
/**
|
|
1665
1665
|
* Creates a transaction instruction to withdraw SOL from a deactivated user stake account using a Fogo session.
|
|
1666
1666
|
* The stake account must be fully deactivated (inactive).
|
|
1667
|
-
* User receives full stake balance (payer's rent contribution compensates for reduced split).
|
|
1668
1667
|
*/
|
|
1669
1668
|
static withdrawFromStakeAccountWithSession(params) {
|
|
1670
|
-
|
|
1671
|
-
const
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
const data = new Uint8Array(17);
|
|
1676
|
-
data[0] = 30; // instruction discriminator (WithdrawFromStakeAccountWithSession = 30)
|
|
1677
|
-
// Write lamports as u64 little-endian (bytes 1-8)
|
|
1678
|
-
const lamportsBigInt = isFullWithdrawal ? U64_MAX : params.lamports;
|
|
1679
|
-
for (let i = 0; i < 8; i++) {
|
|
1680
|
-
data[1 + i] = Number((lamportsBigInt >> BigInt(i * 8)) & BigInt(0xff));
|
|
1681
|
-
}
|
|
1682
|
-
// Write userStakeSeed as u64 little-endian (bytes 9-16)
|
|
1683
|
-
const seedBigInt = BigInt(params.userStakeSeed);
|
|
1684
|
-
for (let i = 0; i < 8; i++) {
|
|
1685
|
-
data[9 + i] = Number((seedBigInt >> BigInt(i * 8)) & BigInt(0xff));
|
|
1686
|
-
}
|
|
1687
|
-
// Account order matches Rust: stake_account, recipient, clock, stake_history, session_signer
|
|
1669
|
+
const type = STAKE_POOL_INSTRUCTION_LAYOUTS.WithdrawFromStakeAccountWithSession;
|
|
1670
|
+
const data = encodeData(type, {
|
|
1671
|
+
lamports: params.lamports,
|
|
1672
|
+
userStakeSeed: params.userStakeSeed,
|
|
1673
|
+
});
|
|
1688
1674
|
const keys = [
|
|
1689
1675
|
{ pubkey: params.userStakeAccount, isSigner: false, isWritable: true },
|
|
1690
1676
|
{ pubkey: params.userWallet, isSigner: false, isWritable: true },
|
|
1691
1677
|
{ pubkey: web3_js.SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },
|
|
1692
1678
|
{ pubkey: web3_js.SYSVAR_STAKE_HISTORY_PUBKEY, isSigner: false, isWritable: false },
|
|
1693
1679
|
{ pubkey: params.sessionSigner, isSigner: true, isWritable: false },
|
|
1680
|
+
{ pubkey: web3_js.StakeProgram.programId, isSigner: false, isWritable: false },
|
|
1694
1681
|
];
|
|
1695
1682
|
return new web3_js.TransactionInstruction({
|
|
1696
1683
|
programId: params.programId,
|
|
1697
1684
|
keys,
|
|
1698
|
-
data
|
|
1685
|
+
data,
|
|
1699
1686
|
});
|
|
1700
1687
|
}
|
|
1701
1688
|
/**
|