use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TransactionType {
#[serde(rename = "CREATE")]
Create,
#[serde(rename = "CLOSE")]
Close,
#[serde(rename = "REOPEN")]
Reopen,
#[serde(rename = "CLIENT_CONFIGURE")]
ClientConfigure,
#[serde(rename = "CLIENT_CONFIGURE_REJECT")]
ClientConfigureReject,
#[serde(rename = "TRANSFER_FUNDS")]
TransferFunds,
#[serde(rename = "TRANSFER_FUNDS_REJECT")]
TransferFundsReject,
#[serde(rename = "MARKET_ORDER")]
MarketOrder,
#[serde(rename = "MARKET_ORDER_REJECT")]
MarketOrderReject,
#[serde(rename = "FIXED_PRICE_ORDER")]
FixedPriceOrder,
#[serde(rename = "LIMIT_ORDER")]
LimitOrder,
#[serde(rename = "LIMIT_ORDER_REJECT")]
LimitOrderReject,
#[serde(rename = "STOP_ORDER")]
StopOrder,
#[serde(rename = "STOP_ORDER_REJECT")]
StopOrderReject,
#[serde(rename = "MARKET_IF_TOUCHED_ORDER")]
MarketIfTouchedOrder,
#[serde(rename = "MARKET_IF_TOUCHED_ORDER_REJECT")]
MarketIfTouchedOrderReject,
#[serde(rename = "TAKE_PROFIT_ORDER")]
TakeProfitOrder,
#[serde(rename = "TAKE_PROFIT_ORDER_REJECT")]
TakeProfitOrderReject,
#[serde(rename = "STOP_LOSS_ORDER")]
StopLossOrder,
#[serde(rename = "STOP_LOSS_ORDER_REJECT")]
StopLossOrderReject,
#[serde(rename = "TRAILING_STOP_LOSS_ORDER")]
TrailingStopLossOrder,
#[serde(rename = "TRAILING_STOP_LOSS_ORDER_REJECT")]
TrailingStopLossOrderReject,
#[serde(rename = "ORDER_FILL")]
OrderFill,
#[serde(rename = "ORDER_CANCEL")]
OrderCancel,
#[serde(rename = "ORDER_CANCEL_REJECT")]
OrderCancelReject,
#[serde(rename = "ORDER_CLIENT_EXTENSIONS_MODIFY")]
OrderClientExtensionsModify,
#[serde(rename = "ORDER_CLIENT_EXTENSIONS_MODIFY_REJECT")]
OrderClientExtensionsModifyReject,
#[serde(rename = "TRADE_CLIENT_EXTENSIONS_MODIFY")]
TradeClientExtensionsModify,
#[serde(rename = "TRADE_CLIENT_EXTENSIONS_MODIFY_REJECT")]
TradeClientExtensionsModifyReject,
#[serde(rename = "MARGIN_CALL_ENTER")]
MarginCallEnter,
#[serde(rename = "MARGIN_CALL_EXTEND")]
MarginCallExtend,
#[serde(rename = "MARGIN_CALL_EXIT")]
MarginCallExit,
#[serde(rename = "DELAYED_TRADE_CLOSURE")]
DelayedTradeClosure,
#[serde(rename = "DAILY_FINANCING")]
DailyFinancing,
#[serde(rename = "RESET_RESETTABLE_PL")]
ResetResettablePl,
}
impl std::fmt::Display for TransactionType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Create => write!(f, "CREATE"),
Self::Close => write!(f, "CLOSE"),
Self::Reopen => write!(f, "REOPEN"),
Self::ClientConfigure => write!(f, "CLIENT_CONFIGURE"),
Self::ClientConfigureReject => write!(f, "CLIENT_CONFIGURE_REJECT"),
Self::TransferFunds => write!(f, "TRANSFER_FUNDS"),
Self::TransferFundsReject => write!(f, "TRANSFER_FUNDS_REJECT"),
Self::MarketOrder => write!(f, "MARKET_ORDER"),
Self::MarketOrderReject => write!(f, "MARKET_ORDER_REJECT"),
Self::FixedPriceOrder => write!(f, "FIXED_PRICE_ORDER"),
Self::LimitOrder => write!(f, "LIMIT_ORDER"),
Self::LimitOrderReject => write!(f, "LIMIT_ORDER_REJECT"),
Self::StopOrder => write!(f, "STOP_ORDER"),
Self::StopOrderReject => write!(f, "STOP_ORDER_REJECT"),
Self::MarketIfTouchedOrder => write!(f, "MARKET_IF_TOUCHED_ORDER"),
Self::MarketIfTouchedOrderReject => write!(f, "MARKET_IF_TOUCHED_ORDER_REJECT"),
Self::TakeProfitOrder => write!(f, "TAKE_PROFIT_ORDER"),
Self::TakeProfitOrderReject => write!(f, "TAKE_PROFIT_ORDER_REJECT"),
Self::StopLossOrder => write!(f, "STOP_LOSS_ORDER"),
Self::StopLossOrderReject => write!(f, "STOP_LOSS_ORDER_REJECT"),
Self::TrailingStopLossOrder => write!(f, "TRAILING_STOP_LOSS_ORDER"),
Self::TrailingStopLossOrderReject => write!(f, "TRAILING_STOP_LOSS_ORDER_REJECT"),
Self::OrderFill => write!(f, "ORDER_FILL"),
Self::OrderCancel => write!(f, "ORDER_CANCEL"),
Self::OrderCancelReject => write!(f, "ORDER_CANCEL_REJECT"),
Self::OrderClientExtensionsModify => write!(f, "ORDER_CLIENT_EXTENSIONS_MODIFY"),
Self::OrderClientExtensionsModifyReject => write!(f, "ORDER_CLIENT_EXTENSIONS_MODIFY_REJECT"),
Self::TradeClientExtensionsModify => write!(f, "TRADE_CLIENT_EXTENSIONS_MODIFY"),
Self::TradeClientExtensionsModifyReject => write!(f, "TRADE_CLIENT_EXTENSIONS_MODIFY_REJECT"),
Self::MarginCallEnter => write!(f, "MARGIN_CALL_ENTER"),
Self::MarginCallExtend => write!(f, "MARGIN_CALL_EXTEND"),
Self::MarginCallExit => write!(f, "MARGIN_CALL_EXIT"),
Self::DelayedTradeClosure => write!(f, "DELAYED_TRADE_CLOSURE"),
Self::DailyFinancing => write!(f, "DAILY_FINANCING"),
Self::ResetResettablePl => write!(f, "RESET_RESETTABLE_PL"),
}
}
}
impl Default for TransactionType {
fn default() -> TransactionType {
Self::Create
}
}