fn redelegate_stake(
    invoke_context: &InvokeContext<'_>,
    stake: &mut Stake,
    stake_lamports: u64,
    voter_pubkey: &Pubkey,
    vote_state: &VoteState,
    clock: &Clock,
    stake_history: &StakeHistory,
    config: &Config
) -> Result<(), StakeError>