use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Category {
Spot,
Linear,
Inverse,
Option,
}
impl std::fmt::Display for Category {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Spot => write!(f, "spot"),
Self::Linear => write!(f, "linear"),
Self::Inverse => write!(f, "inverse"),
Self::Option => write!(f, "option"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum Side {
Buy,
Sell,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum OrderType {
Market,
Limit,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TimeInForce {
GTC,
IOC,
FOK,
PostOnly,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum OrderStatus {
Created,
New,
Rejected,
PartiallyFilled,
PartiallyFilledCanceled,
Filled,
Cancelled,
Untriggered,
Triggered,
Deactivated,
Active,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum PositionIdx {
#[serde(rename = "0")]
OneWay = 0,
#[serde(rename = "1")]
HedgeBuy = 1,
#[serde(rename = "2")]
HedgeSell = 2,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum AccountType {
CONTRACT,
UNIFIED,
SPOT,
INVESTMENT,
OPTION,
FUND,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum Interval {
#[serde(rename = "1")]
M1,
#[serde(rename = "3")]
M3,
#[serde(rename = "5")]
M5,
#[serde(rename = "15")]
M15,
#[serde(rename = "30")]
M30,
#[serde(rename = "60")]
H1,
#[serde(rename = "120")]
H2,
#[serde(rename = "240")]
H4,
#[serde(rename = "360")]
H6,
#[serde(rename = "720")]
H12,
#[serde(rename = "D")]
D1,
#[serde(rename = "W")]
W1,
#[serde(rename = "M")]
M1Month,
}
impl std::fmt::Display for Interval {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::M1 => write!(f, "1"),
Self::M3 => write!(f, "3"),
Self::M5 => write!(f, "5"),
Self::M15 => write!(f, "15"),
Self::M30 => write!(f, "30"),
Self::H1 => write!(f, "60"),
Self::H2 => write!(f, "120"),
Self::H4 => write!(f, "240"),
Self::H6 => write!(f, "360"),
Self::H12 => write!(f, "720"),
Self::D1 => write!(f, "D"),
Self::W1 => write!(f, "W"),
Self::M1Month => write!(f, "M"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TriggerBy {
LastPrice,
IndexPrice,
MarkPrice,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum PositionMode {
#[serde(rename = "0")]
MergedSingle = 0,
#[serde(rename = "3")]
BothSides = 3,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum MarginMode {
CROSS,
ISOLATED,
PORTFOLIO,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TpSlMode {
Full,
Partial,
}