Skip to main content

bullet_exchange_interface/message/vault/
mod.rs

1//! Vault operations.
2use crate::define_enum;
3use crate::string::CustomString;
4use crate::time::UnixTimestampMicros;
5mod args;
6pub use args::*;
7
8define_enum! {
9    /// Vault management operations requiring vault leadership.
10    ///
11    /// These operations can only be called by the vault leader (the address that created the vault).
12    #[non_exhaustive]
13    enum VaultAction<Address> {
14        /// Update vault configuration (leader only).
15        UpdateVaultConfig {
16            vault_address: Address,
17            args: UpdateVaultConfigArgs,
18        } = 0,
19
20        /// Process pending vault withdrawals.
21        ProcessWithdrawalQueue { vault_address: Address } = 1,
22
23        /// Whitelist a depositor for the vault.
24        WhitelistDepositor {
25            vault_address: Address,
26            user_address: Address,
27        } = 2,
28
29        /// Remove a depositor from the vault whitelist.
30        UnwhitelistDepositor {
31            vault_address: Address,
32            user_address: Address,
33        } = 3,
34
35        /// Delegate vault trading to another address.
36        DelegateVaultUser {
37            vault_address: Address,
38            delegate: Address,
39            name: CustomString,
40        } = 4,
41
42        /// Revoke vault trading delegation.
43        RevokeVaultDelegation {
44            vault_address: Address,
45            delegate: Address,
46        } = 5,
47
48        /// Delegate vault trading with optional expiry and flags
49        DelegateVaultUserV1 {
50            vault_address: Address,
51            delegate: Address,
52            name: CustomString,
53            expires_at: Option<UnixTimestampMicros>,
54            flags: u32,
55        } = 6,
56        // Reserved: 7-255
57    }
58}