1use serde::{Deserialize, Serialize};
2use solana_pubkey::Pubkey;
3
4#[derive(Serialize, Deserialize, Clone, Debug)]
8pub struct Vault {
9 pub owner: Vec<u8>,
10 pub bump: u8,
11 pub spend_limit_per_transaction: u64,
12 pub spend_limit_per_timeframe: u64,
13 pub remaining_spend_limit_per_timeframe: u64,
14 pub next_timeframe_reset_timestamp: u64,
15 pub timeframe_in_seconds: u64,
16}
17
18#[derive(Serialize, Deserialize, Clone, Debug)]
20#[serde(rename_all(serialize = "camelCase", deserialize = "snake_case"))]
21pub struct TimeLock {
22 pub owner: Pubkey,
23 pub payer: Pubkey,
24 pub release_slot: u64,
25}
26
27#[derive(Serialize, Deserialize, Clone, Debug)]
29#[serde(rename_all(serialize = "camelCase", deserialize = "snake_case"))]
30pub struct WithdrawOrderAccount {
31 pub time_lock: TimeLock,
32 pub amount_base_units: u64,
33 pub drift_market_index: u16,
34 pub reduce_only: bool,
35 pub destination: Pubkey,
36}
37
38#[derive(Serialize, Deserialize, Clone, Debug)]
40#[serde(rename_all(serialize = "camelCase", deserialize = "snake_case"))]
41pub struct SpendLimitsOrderAccount {
42 pub time_lock: TimeLock,
43 pub spend_limit_per_transaction: u64,
44 pub spend_limit_per_timeframe: u64,
45 pub timeframe_in_seconds: u64,
46 pub next_timeframe_reset_timestamp: u64,
47}