Options
All
  • Public
  • Public/Protected
  • All
Menu

@soceanfi/stake-pool-sdk

Index

Type aliases

ClusterType: "mainnet-beta" | "testnet" | "devnet"
DepositReceipt: { dropletsFeePaid: Numberu64; dropletsReceived: Numberu64; lamportsStaked: Numberu64; referralFeePaid: Numberu64 }

Breakdown of a single deposit into the stake pool

Type declaration

  • dropletsFeePaid: Numberu64

    Total number of droplets paid by the user in deposit fees, including referralFeePaid

  • dropletsReceived: Numberu64

    Number of droplets (1 / 10 ** 9 scnSOL) the user should receive in return for the deposit, with deposit fees deducted

  • lamportsStaked: Numberu64

    Number of lamports that was staked/deposited

  • referralFeePaid: Numberu64

    Number of droplets paid by the user in referral fees. This is a part of dropletsFeePaid, i.e. deposit fee paid to socean = dropletsFeePaid - referralFeePaid

TransactionSequence: TransactionWithSigners[][]

Array of transaction arrays where all transactions in the inner array must be confirmed before proceeding to the next inner array

TransactionSequenceSignatures: string[][]

Array of string arrays where each element corresponds to a transaction in a TransactionSequence

ValidatorAllStakeAccounts: { main: PublicKey; transient: PublicKey }

Type declaration

  • main: PublicKey
  • transient: PublicKey
ValidatorWithdrawalReceipt: { stakeAccount: PublicKey; withdrawalReceipt: WithdrawalReceipt }

A withdrawal receipt for a single stake account in the stake pool

  • the stakeAccount to make the withdrawal from

Type declaration

  • stakeAccount: PublicKey

    The stake account to make this withdrawal from. Can be a validator stake account, transient stake account, or the pool's reserve stake account.

  • withdrawalReceipt: WithdrawalReceipt

    The calculated withdrawal receipt for this stake account

WithdrawalReceipt: { dropletsFeePaid: Numberu64; dropletsUnstaked: Numberu64; lamportsReceived: Numberu64 }

Breakdown of a single withdrawal from a single stake account in the stake pool

Type declaration

  • dropletsFeePaid: Numberu64

    Number of droplets paid by the user in withdrawal fees

  • dropletsUnstaked: Numberu64

    Number of droplets that was unstaked/withdrawn

  • lamportsReceived: Numberu64

    Number of lamports the user should receive from the withdrawal, with withdrawal fees deducted

Variables

MIN_ACTIVE_STAKE_LAMPORTS: Numberu64 = ...

A validator stake account needs this amount of active staked lamports for the staker to be able to remove the validator from the stake pool. NOTE: this is likely to be revised upwards to a network global of 1_000_000_000 (1 SOL) soon

STAKE_ACCOUNT_RENT_EXEMPT_LAMPORTS: Numberu64 = ...

Functions

  • Calculates and returns the expected amount of droplets (1 / 10 ** 9 scnSOL) to be received by the user for staking SOL, with deposit fees factored in. Note: if an epoch boundary crosses and the stake pool is updated, the scnSOL supply will no longer match and the result of this function will be incorrect

    Parameters

    • lamportsToStake: Numberu64

      amount of SOL to be staked, in lamports

    • stakePool: StakePool

      the stake pool to stake to

    Returns DepositReceipt

    the amount of droplets (1 / 10 ** 9 scnSOL) to be received by the user

  • Calculates and returns the expected amount of droplets (1 / 10 ** 9 scnSOL) to be received by the user for staking stake account(s), with deposit fees factored in. Note: if an epoch boundary crosses and the stake pool is updated, the scnSOL supply will no longer match and the result of this function will be incorrect

    Parameters

    • lamportsToStake: Numberu64

      SOL value of the stake accounts to be staked, in lamports

    • stakePool: StakePool

      the stake pool to stake to

    Returns DepositReceipt

    the amount of droplets (1 / 10 ** 9 scnSOL) to be received by the user

  • Helper function for calculating expected lamports given the amount of droplets to withdraw. Mirrors on-chain math exactly. Due to loss of precision from int arithmetic, this function should be ran per validator instead of on an entire withdrawal amount.

    throws

    Parameters

    Returns WithdrawalReceipt

    expected lamports given in return for unstaking dropletsToUnstake, with withdrawal fees factored in, and the withdrawal fees charged

  • Calculates the withdrawal procedure - how many lamports to split and withdraw from each validator stake account given a desired number of droplets to withdraw.

    returns:

    Array of ValidatorWithdrawalReceipt, where Sum of all their dropletsUnstaked must = withdrawalAmountDroplets Pass this array directly to getWithdrawStakeTransactions()

          Returns array with single elem if withdrawing from reserve account
    
    throws

    WithdrawalUnserviceableError if a suitable withdraw procedure is not found

    Parameters

    Returns Promise<ValidatorWithdrawalReceipt[]>

  • cleanupRemovedValidatorsInstruction(stakePoolProgramId: PublicKey, stakePool: PublicKey, validatorList: PublicKey): TransactionInstruction
  • Parameters

    • stakePoolProgramId: PublicKey
    • stakePool: PublicKey
    • validatorList: PublicKey

    Returns TransactionInstruction

  • decodeStakePool(accountData: Buffer): StakePool
  • Parameters

    • accountData: Buffer

    Returns StakePool

  • Parameters

    • accountData: Buffer

    Returns ValidatorList

  • depositSolInstruction(stakePoolProgramId: PublicKey, stakePool: PublicKey, stakePoolWithdrawAuthority: PublicKey, reserveStake: PublicKey, lamportsFrom: PublicKey, poolTokenTo: PublicKey, managerFeeAccount: PublicKey, referrerPoolTokenAccount: PublicKey, poolMint: PublicKey, tokenProgramId: PublicKey, amount: Numberu64, solDepositAuthority?: PublicKey): TransactionInstruction
  • Initializes a DepositSol stake pool instruction given the required accounts and data

    Parameters

    • stakePoolProgramId: PublicKey
    • stakePool: PublicKey
    • stakePoolWithdrawAuthority: PublicKey
    • reserveStake: PublicKey
    • lamportsFrom: PublicKey
    • poolTokenTo: PublicKey
    • managerFeeAccount: PublicKey
    • referrerPoolTokenAccount: PublicKey
    • poolMint: PublicKey
    • tokenProgramId: PublicKey
    • amount: Numberu64
    • Optional solDepositAuthority: PublicKey

    Returns TransactionInstruction

  • depositStakeInstruction(stakePoolProgramId: PublicKey, stakePool: PublicKey, validatorList: PublicKey, stakePoolDepositAuthority: PublicKey, stakePoolWithdrawAuthority: PublicKey, depositStakeAddress: PublicKey, validatorStakeAccount: PublicKey, reserveStake: PublicKey, poolTokensTo: PublicKey, managerFeeAccount: PublicKey, referrerPoolTokensAccount: PublicKey, poolMint: PublicKey, tokenProgramId: PublicKey): TransactionInstruction
  • Initializes a DepositStake stake pool instruction given the required accounts and data This instruction assumes that the depositStakeAddress stake account's withdraw and deposit authority has already been set to stakePoolDepositAuthority. To use this in a transaction, prefix this instruction with two StakeProgram.authorize instructions to change the stake account's authorities to stakePoolDepositAuthority.

    Parameters

    • stakePoolProgramId: PublicKey
    • stakePool: PublicKey
    • validatorList: PublicKey
    • stakePoolDepositAuthority: PublicKey
    • stakePoolWithdrawAuthority: PublicKey
    • depositStakeAddress: PublicKey
    • validatorStakeAccount: PublicKey
    • reserveStake: PublicKey
    • poolTokensTo: PublicKey
    • managerFeeAccount: PublicKey
    • referrerPoolTokensAccount: PublicKey
    • poolMint: PublicKey
    • tokenProgramId: PublicKey

    Returns TransactionInstruction

  • Signs and sends TransactionSequence, awaiting confirmations for each inner array of transactions before proceeding to the next one

    throws

    RpcError

    throws

    WalletPublicKeyUnavailableError

    Parameters

    • walletAdapter: WalletAdapter

      wallet signing the transaction

    • transactionSequence: TransactionSequence

      TransactionSequence to sign and send

    • connection: Connection

      solana connection

    • confirmOptions: ConfirmOptions = TRANSACTION_SEQUENCE_DEFAULT_CONFIRM_OPTIONS

      transaction confirm options for each transaction

    Returns Promise<TransactionSequenceSignatures>

    TransactionSequenceSignatures for all transactions in the TransactionSequence

  • Sums up the total number of droplets unstaked given an array of ValidatorWithdrawalReceipts

    Parameters

    Returns Numberu64

  • Sums up the total number of lamports withdrawn given an array of ValidatorWithdrawalReceipts

    Parameters

    Returns Numberu64

  • Sums up the total number of droplets (1 / 10 ** 9 scnSOL) paid in withdrawal fees given an array of ValidatorWithdrawalReceipts

    Parameters

    Returns Numberu64

  • updateStakePoolBalanceInstruction(stakePoolProgramId: PublicKey, stakePool: PublicKey, stakePoolWithdrawAuthority: PublicKey, validatorList: PublicKey, reserveStake: PublicKey, managerFeeAccount: PublicKey, poolMint: PublicKey, tokenProgramId: PublicKey): TransactionInstruction
  • Parameters

    • stakePoolProgramId: PublicKey
    • stakePool: PublicKey
    • stakePoolWithdrawAuthority: PublicKey
    • validatorList: PublicKey
    • reserveStake: PublicKey
    • managerFeeAccount: PublicKey
    • poolMint: PublicKey
    • tokenProgramId: PublicKey

    Returns TransactionInstruction

  • updateValidatorListBalanceTransaction(stakePoolProgramId: PublicKey, stakePool: PublicKey, stakePoolWithdrawAuthority: PublicKey, validatorList: PublicKey, reserveStake: PublicKey, validatorStakeAccounts: ValidatorAllStakeAccounts[], startIndex: number, noMerge: boolean): Transaction
  • Creates a transaction with a single UpdateValidatorListBalance instruction Since UpdateValidatorListBalance must be the sole instruction of any transaction, (there's a vulnerability if it isn't) we don't export the instruction directly, only a containing transaction

    throws

    Parameters

    • stakePoolProgramId: PublicKey

      The stake pool prog

    • stakePool: PublicKey
    • stakePoolWithdrawAuthority: PublicKey
    • validatorList: PublicKey
    • reserveStake: PublicKey
    • validatorStakeAccounts: ValidatorAllStakeAccounts[]
    • startIndex: number
    • noMerge: boolean

    Returns Transaction

  • withdrawStakeInstruction(stakePoolProgramId: PublicKey, stakePool: PublicKey, validatorList: PublicKey, stakePoolWithdrawAuthority: PublicKey, stakeSplitFrom: PublicKey, stakeSplitTo: PublicKey, userStakeAuthority: PublicKey, userTokenTransferAuthority: PublicKey, userPoolTokenAccount: PublicKey, managerFeeAccount: PublicKey, poolMint: PublicKey, tokenProgramId: PublicKey, dropletsToUnstake: Numberu64): TransactionInstruction
  • Initializes a WithdrawStake stake pool instruction given the required accounts and data

    Parameters

    • stakePoolProgramId: PublicKey
    • stakePool: PublicKey
    • validatorList: PublicKey
    • stakePoolWithdrawAuthority: PublicKey
    • stakeSplitFrom: PublicKey
    • stakeSplitTo: PublicKey
    • userStakeAuthority: PublicKey
    • userTokenTransferAuthority: PublicKey
    • userPoolTokenAccount: PublicKey
    • managerFeeAccount: PublicKey
    • poolMint: PublicKey
    • tokenProgramId: PublicKey
    • dropletsToUnstake: Numberu64

    Returns TransactionInstruction

Generated using TypeDoc