Skip to main content

bullet_exchange_interface/message/public/
mod.rs

1//! Permissionless operations.
2
3use crate::define_enum;
4use crate::types::MarketId;
5
6define_enum! {
7    /// Permissionless operations anyone can call.
8    ///
9    /// These operations have no authorization checks - anyone can trigger them.
10    /// Typically used for MEV opportunities (liquidations) or protocol maintenance
11    /// (interest accrual, funding application).
12    #[non_exhaustive]
13    enum PublicAction<Address> {
14        /// Try to force close cross margin perp positions for a user account under maintenance margin but above backstop liquidation margin (permissionless).
15        LiquidatePerpPositions { address: Address } = 0,
16
17        /// Force cancel orders for a user under initial margin on cross margin positions (permissionless).
18        ForceCancelOrders { user_address: Address } = 1,
19
20        /// Execute active trigger orders (permissionless).
21        ExecuteTriggerOrders { market_id: MarketId } = 2,
22
23        /// Apply funding to user accounts (permissionless).
24        ApplyFunding { addresses: Vec<Address> } = 3,
25
26        /// Accrue borrow/lend interest (permissionless).
27        AccrueBorrowLendInterest {} = 4,
28
29        /// Execute TWAP orders  (permissionless)
30        ExecuteTwapOrders { market_id: MarketId } = 5,
31
32        /// Activate TWAP orders  (permissionless)
33        ActivateTwapOrders { market_ids: Vec<MarketId> } = 6,
34
35        /// Force cancel orders for a user under initial margin for an iso margin position (permissionless)
36        ForceCancelIsoOrders { user_address: Address, market_id: MarketId } = 7,
37
38        /// Try to force close an iso margin position for a user under maintenance margin but above backstop liquidation margin (permissionless)
39        LiquidateIsoPerpPosition { user_address: Address, market_id: MarketId } = 8,
40
41        // Reserved: 9-255
42    }
43}