use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum OrderCancelReason {
#[serde(rename = "UNSPECIFIED")]
Unspecified,
#[serde(rename = "INSUFFICIENT_MARGIN")]
InsufficientMargin,
#[serde(rename = "DUPLICATE_ORDER")]
DuplicateOrder,
#[serde(rename = "POST_ONLY_WOULD_TRADE")]
PostOnlyWouldTrade,
#[serde(rename = "INVALID_SYMBOL")]
InvalidSymbol,
#[serde(rename = "SIGNED_AT_TOO_OLD")]
SignedAtTooOld,
#[serde(rename = "ORDER_EXPIRED")]
OrderExpired,
#[serde(rename = "INVALID_LEVERAGE")]
InvalidLeverage,
#[serde(rename = "INVALID_INPUT")]
InvalidInput,
#[serde(rename = "PRICE_OUT_OF_BOUND")]
PriceOutOfBound,
#[serde(rename = "QUANTITY_OUT_OF_BOUND")]
QuantityOutOfBound,
#[serde(rename = "PRICE_OUT_OF_TICK_SIZE")]
PriceOutOfTickSize,
#[serde(rename = "QUANTITY_OUT_OF_STEP_SIZE")]
QuantityOutOfStepSize,
#[serde(rename = "REDUCE_ONLY_WOULD_OPEN")]
ReduceOnlyWouldOpen,
#[serde(rename = "TOO_MANY_OPEN_ORDERS_ON_MARKET")]
TooManyOpenOrdersOnMarket,
#[serde(rename = "USER_CANCELLED")]
UserCancelled,
#[serde(rename = "USER_CANCELLED_ALL_ON_MARKET")]
UserCancelledAllOnMarket,
#[serde(rename = "SELF_TRADE_PREVENTION")]
SelfTradePrevention,
#[serde(rename = "LEVERAGE_UPDATE")]
LeverageUpdate,
#[serde(rename = "ACCOUNT_NOT_FOUND")]
AccountNotFound,
#[serde(rename = "MARKET_NOT_TRADING")]
MarketNotTrading,
#[serde(rename = "INSUFFICIENT_LIQUIDITY")]
InsufficientLiquidity,
#[serde(rename = "POSITION_NOT_FOUND")]
PositionNotFound,
#[serde(rename = "LIQUIDATION_OUT_OF_ORDER")]
LiquidationOutOfOrder,
#[serde(rename = "ACCOUNT_NOT_LIQUIDATABLE")]
AccountNotLiquidatable,
#[serde(rename = "ORDER_NOT_REDUCING_POSITION")]
OrderNotReducingPosition,
#[serde(rename = "USER_CANCELLED_ALL_STANDBY_ON_MARKET")]
UserCancelledAllStandbyOnMarket,
#[serde(rename = "POSITION_EXCEEDS_MAX_OPEN_INTEREST")]
PositionExceedsMaxOpenInterest,
#[serde(rename = "ACCOUNT_DEAUTHORIZED")]
AccountDeauthorized,
#[serde(rename = "TOO_MANY_MATCHES")]
TooManyMatches,
#[serde(rename = "MARGIN_CALL")]
MarginCall,
#[serde(rename = "INSUFFICIENT_BALANCE")]
InsufficientBalance,
#[serde(rename = "TRADE_QUANTITY_OUT_OF_BOUND")]
TradeQuantityOutOfBound,
#[serde(rename = "MARKET_TAKE_BOUND_BREACHED")]
MarketTakeBoundBreached,
#[serde(rename = "ORDERS_EXCEED_MAX_OPEN_INTEREST")]
OrdersExceedMaxOpenInterest,
}
impl std::fmt::Display for OrderCancelReason {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Unspecified => write!(f, "UNSPECIFIED"),
Self::InsufficientMargin => write!(f, "INSUFFICIENT_MARGIN"),
Self::DuplicateOrder => write!(f, "DUPLICATE_ORDER"),
Self::PostOnlyWouldTrade => write!(f, "POST_ONLY_WOULD_TRADE"),
Self::InvalidSymbol => write!(f, "INVALID_SYMBOL"),
Self::SignedAtTooOld => write!(f, "SIGNED_AT_TOO_OLD"),
Self::OrderExpired => write!(f, "ORDER_EXPIRED"),
Self::InvalidLeverage => write!(f, "INVALID_LEVERAGE"),
Self::InvalidInput => write!(f, "INVALID_INPUT"),
Self::PriceOutOfBound => write!(f, "PRICE_OUT_OF_BOUND"),
Self::QuantityOutOfBound => write!(f, "QUANTITY_OUT_OF_BOUND"),
Self::PriceOutOfTickSize => write!(f, "PRICE_OUT_OF_TICK_SIZE"),
Self::QuantityOutOfStepSize => write!(f, "QUANTITY_OUT_OF_STEP_SIZE"),
Self::ReduceOnlyWouldOpen => write!(f, "REDUCE_ONLY_WOULD_OPEN"),
Self::TooManyOpenOrdersOnMarket => write!(f, "TOO_MANY_OPEN_ORDERS_ON_MARKET"),
Self::UserCancelled => write!(f, "USER_CANCELLED"),
Self::UserCancelledAllOnMarket => write!(f, "USER_CANCELLED_ALL_ON_MARKET"),
Self::SelfTradePrevention => write!(f, "SELF_TRADE_PREVENTION"),
Self::LeverageUpdate => write!(f, "LEVERAGE_UPDATE"),
Self::AccountNotFound => write!(f, "ACCOUNT_NOT_FOUND"),
Self::MarketNotTrading => write!(f, "MARKET_NOT_TRADING"),
Self::InsufficientLiquidity => write!(f, "INSUFFICIENT_LIQUIDITY"),
Self::PositionNotFound => write!(f, "POSITION_NOT_FOUND"),
Self::LiquidationOutOfOrder => write!(f, "LIQUIDATION_OUT_OF_ORDER"),
Self::AccountNotLiquidatable => write!(f, "ACCOUNT_NOT_LIQUIDATABLE"),
Self::OrderNotReducingPosition => write!(f, "ORDER_NOT_REDUCING_POSITION"),
Self::UserCancelledAllStandbyOnMarket => write!(f, "USER_CANCELLED_ALL_STANDBY_ON_MARKET"),
Self::PositionExceedsMaxOpenInterest => write!(f, "POSITION_EXCEEDS_MAX_OPEN_INTEREST"),
Self::AccountDeauthorized => write!(f, "ACCOUNT_DEAUTHORIZED"),
Self::TooManyMatches => write!(f, "TOO_MANY_MATCHES"),
Self::MarginCall => write!(f, "MARGIN_CALL"),
Self::InsufficientBalance => write!(f, "INSUFFICIENT_BALANCE"),
Self::TradeQuantityOutOfBound => write!(f, "TRADE_QUANTITY_OUT_OF_BOUND"),
Self::MarketTakeBoundBreached => write!(f, "MARKET_TAKE_BOUND_BREACHED"),
Self::OrdersExceedMaxOpenInterest => write!(f, "ORDERS_EXCEED_MAX_OPEN_INTEREST"),
}
}
}
impl Default for OrderCancelReason {
fn default() -> OrderCancelReason {
Self::Unspecified
}
}