StakePoolProgram.depositStake constructor
      
      StakePoolProgram.depositStake({ 
    
- required SolAddress stakePool,
- required SolAddress validatorList,
- required SolAddress depositAuthority,
- required SolAddress withdrawAuthority,
- required SolAddress depositStake,
- required SolAddress validatorStake,
- required SolAddress reserveStake,
- required SolAddress destinationPoolAccount,
- required SolAddress managerFeeAccount,
- required SolAddress referralPoolAccount,
- required SolAddress poolMint,
Deposit some stake into the pool. The output is a "pool" token representing ownership into the pool. Inputs are converted to the current ratio.
Implementation
factory StakePoolProgram.depositStake({
  /// Stake pool
  required SolAddress stakePool,
  /// Validator stake list storage account
  required SolAddress validatorList,
  /// Stake pool deposit authority
  required SolAddress depositAuthority,
  /// Stake pool withdraw authority
  required SolAddress withdrawAuthority,
  /// Stake account to join the pool (withdraw authority for the
  /// stake account should be first set to the stake pool deposit
  /// authority)
  required SolAddress depositStake,
  /// Validator stake account for the stake account to be merged
  required SolAddress validatorStake,
  /// Reserve stake account, to withdraw rent exempt reserve
  required SolAddress reserveStake,
  /// User account to receive pool tokens
  required SolAddress destinationPoolAccount,
  /// Account to receive pool fee tokens
  required SolAddress managerFeeAccount,
  /// Account to receive a portion of pool fee tokens as referral
  /// fees
  required SolAddress referralPoolAccount,
  /// Pool token mint account
  required SolAddress poolMint,
}) {
  return StakePoolProgram(
      layout: const StakePoolDepositStakeLayout(),
      keys: [
        stakePool.toWritable(),
        validatorList.toWritable(),
        depositAuthority.toReadOnly(),
        withdrawAuthority.toReadOnly(),
        depositStake.toWritable(),
        validatorStake.toWritable(),
        reserveStake.toWritable(),
        destinationPoolAccount.toWritable(),
        managerFeeAccount.toWritable(),
        referralPoolAccount.toWritable(),
        poolMint.toWritable(),
        SystemProgramConst.sysvarClockPubkey.toReadOnly(),
        SystemProgramConst.sysvarStakeHistoryPubkey.toReadOnly(),
        SPLTokenProgramConst.tokenProgramId.toReadOnly(),
        StakeProgramConst.programId.toReadOnly()
      ],
      programId: StakePoolProgramConst.programId);
}