use serde::{Deserialize, Serialize};
use solana_pubkey::Pubkey;
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Vault {
pub owner: Vec<u8>,
pub bump: u8,
pub spend_limit_per_transaction: u64,
pub spend_limit_per_timeframe: u64,
pub remaining_spend_limit_per_timeframe: u64,
pub next_timeframe_reset_timestamp: u64,
pub timeframe_in_seconds: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all(serialize = "camelCase", deserialize = "snake_case"))]
pub struct TimeLock {
pub owner: Pubkey,
pub payer: Pubkey,
pub release_slot: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all(serialize = "camelCase", deserialize = "snake_case"))]
pub struct WithdrawOrderAccount {
pub time_lock: TimeLock,
pub amount_base_units: u64,
pub drift_market_index: u16,
pub reduce_only: bool,
pub destination: Pubkey,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all(serialize = "camelCase", deserialize = "snake_case"))]
pub struct SpendLimitsOrderAccount {
pub time_lock: TimeLock,
pub spend_limit_per_transaction: u64,
pub spend_limit_per_timeframe: u64,
pub timeframe_in_seconds: u64,
pub next_timeframe_reset_timestamp: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct DepositAddressSplAccount {
pub mint: Pubkey,
pub owner: Pubkey,
pub amount: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct DepositAddressSolAccount {
pub lamports: u64,
}