pyra-instructions 0.3.1

Instruction builders for the Pyra protocol on Solana
Documentation
use anchor_lang::{InstructionData, ToAccountMetas};
use solana_program::{instruction::Instruction, pubkey::Pubkey};

use crate::constants::SYSTEM_PROGRAM_ID;

pub struct InitiateUpdateSpendLimitsParams {
    pub owner: Pubkey,
    pub spend_limits_order: Pubkey,
    pub payer: Pubkey,
    pub spend_limit_per_transaction: u64,
    pub spend_limit_per_timeframe: u64,
    pub next_timeframe_reset_timestamp: u64,
    pub timeframe_in_seconds: u64,
}

pub fn initiate_update_spend_limits(params: &InitiateUpdateSpendLimitsParams) -> Instruction {
    let vault = pyra_accounts::get_vault(&params.owner);

    let accounts = crate::pyra_program::client::accounts::InitiateUpdateSpendLimits {
        vault,
        owner: params.owner,
        spend_limits_order: params.spend_limits_order,
        payer: params.payer,
        system_program: SYSTEM_PROGRAM_ID,
    }
    .to_account_metas(None);

    let data = crate::pyra_program::client::args::InitiateUpdateSpendLimits {
        spend_limit_per_transaction: params.spend_limit_per_transaction,
        spend_limit_per_timeframe: params.spend_limit_per_timeframe,
        next_timeframe_reset_timestamp: params.next_timeframe_reset_timestamp,
        timeframe_in_seconds: params.timeframe_in_seconds,
    }
    .data();

    Instruction {
        program_id: pyra_accounts::PYRA_PROGRAM_ID,
        accounts,
        data,
    }
}