use crate::decimals::PositiveDecimal;
use crate::define_enum;
use crate::message::CreateVaultArgs;
use crate::types::{AdminType, AssetId, MarketId, OrderId, TriggerOrderId};
mod args;
pub use args::*;
define_enum! {
enum AdminAction<Address> {
InitPerpMarket { args: InitPerpMarketArgs } = 0,
UpdatePerpMarket { args: UpdatePerpMarketArgs } = 1,
InitSpotMarket { args: InitSpotMarketArgs } = 2,
UpdateSpotMarket { args: UpdateSpotMarketArgs } = 3,
HaltPerpMarket {
market_id: MarketId,
settlement_price: PositiveDecimal,
} = 4,
UnhaltPerpMarket { market_id: MarketId } = 5,
HaltSpotMarket { market_id: MarketId } = 6,
UnhaltSpotMarket { market_id: MarketId } = 7,
PruneMarket { market_id: MarketId } = 8,
DeleteMarket { market_id: MarketId } = 9,
CleanupUserMarketState {
market_id: MarketId,
users: Vec<Address>,
} = 10,
UpdatePerpLeverageTable {
market_id: MarketId,
args: SurrogateLeverageTableArgs,
} = 11,
DeleteAsset { asset_id: AssetId } = 12,
InitAssetInfo { args: InitAssetInfoArgs } = 20,
UpdateAssetInfo { args: UpdateAssetInfoArgs } = 21,
InitBorrowLendPool { args: InitBorrowLendPoolArgs } = 30,
UpdateBorrowLendPool { args: UpdateBorrowLendPoolArgs } = 31,
HaltBorrowLendPool { asset_id: AssetId } = 32,
UnhaltBorrowLendPool { asset_id: AssetId } = 33,
UpdateGlobalConfig {
args: UpdateGlobalConfigArgs<Address>,
} = 40,
UpdatePerpLiquidationConfig {
args: UpdatePerpLiquidationConfigArgs,
} = 41,
UpdateGlobalVaultConfig { args: UpdateGlobalVaultConfigArgs } = 42,
UpdateAdmin {
admin_type: AdminType,
new_admin: Address,
} = 43,
WithdrawFromTreasury {
asset_id: AssetId,
amount: PositiveDecimal,
to: Address,
} = 50,
CancelOrders {
cancels: Vec<(MarketId, OrderId, Address)>,
} = 60,
CancelTriggerOrders {
cancels: Vec<(MarketId, TriggerOrderId, Address)>,
} = 61,
ForceSettlePerpPosition {
market_id: MarketId,
users: Vec<Address>,
} = 62,
AutoDeleverage {
counterparty_a: Address,
counterparty_a_sub_account_index: Option<u8>,
counterparty_b: Address,
counterparty_b_sub_account_index: Option<u8>,
market_id: MarketId,
size: Option<PositiveDecimal>,
settlement_price: PositiveDecimal,
} = 63,
Deposit {
user_address: Address,
asset_id: AssetId,
amount: PositiveDecimal,
} = 64,
ForceRemoveDelegate { delegator: Address, delegate: Address } = 65,
InitProtocolVault { args: CreateVaultArgs<Address> } = 66,
}
}