pub fn delegate(
    invoke_context: &InvokeContext<'_>,
    transaction_context: &TransactionContext,
    instruction_context: &InstructionContext,
    stake_account_index: usize,
    vote_account_index: usize,
    clock: &Clock,
    stake_history: &StakeHistory,
    config: &Config,
    signers: &HashSet<Pubkey>,
    feature_set: &FeatureSet
) -> Result<(), InstructionError>