pub trait StakeAccount {
    // Required methods
    fn initialize(
        &self,
        authorized: &Authorized,
        lockup: &Lockup,
        rent: &Rent
    ) -> Result<(), InstructionError>;
    fn authorize(
        &self,
        signers: &HashSet<Pubkey>,
        new_authority: &Pubkey,
        stake_authorize: StakeAuthorize,
        require_custodian_for_locked_stake_authorize: bool,
        clock: &Clock,
        custodian: Option<&Pubkey>
    ) -> Result<(), InstructionError>;
    fn authorize_with_seed(
        &self,
        authority_base: &KeyedAccount<'_>,
        authority_seed: &str,
        authority_owner: &Pubkey,
        new_authority: &Pubkey,
        stake_authorize: StakeAuthorize,
        require_custodian_for_locked_stake_authorize: bool,
        clock: &Clock,
        custodian: Option<&Pubkey>
    ) -> Result<(), InstructionError>;
    fn delegate(
        &self,
        vote_account: &KeyedAccount<'_>,
        clock: &Clock,
        stake_history: &StakeHistory,
        config: &Config,
        signers: &HashSet<Pubkey>
    ) -> Result<(), InstructionError>;
    fn deactivate(
        &self,
        clock: &Clock,
        signers: &HashSet<Pubkey>
    ) -> Result<(), InstructionError>;
    fn set_lockup(
        &self,
        lockup: &LockupArgs,
        signers: &HashSet<Pubkey>,
        clock: &Clock
    ) -> Result<(), InstructionError>;
    fn split(
        &self,
        lamports: u64,
        split_stake: &KeyedAccount<'_>,
        signers: &HashSet<Pubkey>
    ) -> Result<(), InstructionError>;
    fn merge(
        &self,
        invoke_context: &InvokeContext<'_>,
        source_stake: &KeyedAccount<'_>,
        clock: &Clock,
        stake_history: &StakeHistory,
        signers: &HashSet<Pubkey>
    ) -> Result<(), InstructionError>;
    fn withdraw(
        &self,
        lamports: u64,
        to: &KeyedAccount<'_>,
        clock: &Clock,
        stake_history: &StakeHistory,
        withdraw_authority: &KeyedAccount<'_>,
        custodian: Option<&KeyedAccount<'_>>
    ) -> Result<(), InstructionError>;
}

Required Methods§

source

fn initialize( &self, authorized: &Authorized, lockup: &Lockup, rent: &Rent ) -> Result<(), InstructionError>

source

fn authorize( &self, signers: &HashSet<Pubkey>, new_authority: &Pubkey, stake_authorize: StakeAuthorize, require_custodian_for_locked_stake_authorize: bool, clock: &Clock, custodian: Option<&Pubkey> ) -> Result<(), InstructionError>

source

fn authorize_with_seed( &self, authority_base: &KeyedAccount<'_>, authority_seed: &str, authority_owner: &Pubkey, new_authority: &Pubkey, stake_authorize: StakeAuthorize, require_custodian_for_locked_stake_authorize: bool, clock: &Clock, custodian: Option<&Pubkey> ) -> Result<(), InstructionError>

source

fn delegate( &self, vote_account: &KeyedAccount<'_>, clock: &Clock, stake_history: &StakeHistory, config: &Config, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source

fn deactivate( &self, clock: &Clock, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source

fn set_lockup( &self, lockup: &LockupArgs, signers: &HashSet<Pubkey>, clock: &Clock ) -> Result<(), InstructionError>

source

fn split( &self, lamports: u64, split_stake: &KeyedAccount<'_>, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source

fn merge( &self, invoke_context: &InvokeContext<'_>, source_stake: &KeyedAccount<'_>, clock: &Clock, stake_history: &StakeHistory, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source

fn withdraw( &self, lamports: u64, to: &KeyedAccount<'_>, clock: &Clock, stake_history: &StakeHistory, withdraw_authority: &KeyedAccount<'_>, custodian: Option<&KeyedAccount<'_>> ) -> Result<(), InstructionError>

Implementations on Foreign Types§

source§

impl<'a> StakeAccount for KeyedAccount<'a>

source§

fn authorize( &self, signers: &HashSet<Pubkey>, new_authority: &Pubkey, stake_authorize: StakeAuthorize, require_custodian_for_locked_stake_authorize: bool, clock: &Clock, custodian: Option<&Pubkey> ) -> Result<(), InstructionError>

Authorize the given pubkey to manage stake (deactivate, withdraw). This may be called multiple times, but will implicitly withdraw authorization from the previously authorized staker. The default staker is the owner of the stake account’s pubkey.

source§

fn initialize( &self, authorized: &Authorized, lockup: &Lockup, rent: &Rent ) -> Result<(), InstructionError>

source§

fn authorize_with_seed( &self, authority_base: &KeyedAccount<'_>, authority_seed: &str, authority_owner: &Pubkey, new_authority: &Pubkey, stake_authorize: StakeAuthorize, require_custodian_for_locked_stake_authorize: bool, clock: &Clock, custodian: Option<&Pubkey> ) -> Result<(), InstructionError>

source§

fn delegate( &self, vote_account: &KeyedAccount<'_>, clock: &Clock, stake_history: &StakeHistory, config: &Config, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source§

fn deactivate( &self, clock: &Clock, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source§

fn set_lockup( &self, lockup: &LockupArgs, signers: &HashSet<Pubkey>, clock: &Clock ) -> Result<(), InstructionError>

source§

fn split( &self, lamports: u64, split: &KeyedAccount<'_>, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source§

fn merge( &self, invoke_context: &InvokeContext<'_>, source_account: &KeyedAccount<'_>, clock: &Clock, stake_history: &StakeHistory, signers: &HashSet<Pubkey> ) -> Result<(), InstructionError>

source§

fn withdraw( &self, lamports: u64, to: &KeyedAccount<'_>, clock: &Clock, stake_history: &StakeHistory, withdraw_authority: &KeyedAccount<'_>, custodian: Option<&KeyedAccount<'_>> ) -> Result<(), InstructionError>

Implementors§