pub mod futures;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SecurityType {
None,
Trade,
Margin,
UserData,
UserStream,
MarketData,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SymbolStatus {
PreTrading,
Trading,
PostTrading,
EndOfDay,
Halt,
AuctionMatch,
Break,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Permission {
Spot,
Margin,
Leveraged,
TrdGrp002,
TrdGrp003,
TrdGrp004,
TrdGrp005,
TrdGrp006,
TrdGrp007,
TrdGrp008,
TrdGrp009,
TrdGrp010,
TrdGrp011,
TrdGrp012,
TrdGrp013,
TrdGrp014,
TrdGrp015,
TrdGrp016,
TrdGrp017,
TrdGrp018,
TrdGrp019,
TrdGrp020,
TrdGrp021,
TrdGrp022,
TrdGrp023,
TrdGrp024,
TrdGrp025,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OrderStatus {
New,
PendingNew,
PartiallyFilled,
Filled,
Canceled,
PendingCancel,
Rejected,
Expired,
ExpiredInMatch,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OrderListStatus {
Response,
ExecStarted,
AllDone,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OrderListOrderStatus {
Executing,
AllDone,
Reject,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ContingencyType {
Oco,
Oto,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum AllocationType {
Sor,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OrderType {
Limit,
Market,
StopLoss,
StopLossLimit,
TakeProfit,
TakeProfitLimit,
LimitMaker,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ResponseType {
Ack,
Result,
Full,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SideEffectType {
NoSideEffect,
MarginBuy,
AutoRepay,
AutoBorrowRepay,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OrderRateLimitExceededMode {
DoNothing,
CancelOnly,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum WorkingFloor {
Exchange,
Sor,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OrderSide {
Buy,
Sell,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum TimeInForce {
Gtc, Ioc, Fok, }
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SelfTradePreventionMode {
ExpireTaker,
ExpireMaker,
ExpireBoth,
None,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RateLimit {
pub rate_limit_type: String,
pub interval: RateLimitIntervals,
pub interval_num: i64,
pub limit: i64,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum RateLimitIntervals {
Second,
Minute,
Day,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum StpModes {
None,
ExpireMaker,
ExpireTaker,
ExpireBoth,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum CancelRestriction {
OnlyNew,
OnlyPartiallyFilled,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum CancelReplaceMode {
StopOnFailure,
AllowFailure,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum TickerType {
Full,
Mini,
}
#[derive(Debug)]
pub enum KlineInterval {
OneSecond,
OneMinute,
ThreeMinutes,
FiveMinutes,
FifteenMinutes,
ThirtyMinutes,
OneHour,
TwoHours,
FourHours,
SixHours,
EightHours,
TwelveHours,
OneDay,
ThreeDays,
OneWeek,
OneMonth,
}
impl Serialize for KlineInterval {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::ser::Serializer,
{
let interval = match self {
KlineInterval::OneSecond => "1s",
KlineInterval::OneMinute => "1m",
KlineInterval::ThreeMinutes => "3m",
KlineInterval::FiveMinutes => "5m",
KlineInterval::FifteenMinutes => "15m",
KlineInterval::ThirtyMinutes => "30m",
KlineInterval::OneHour => "1h",
KlineInterval::TwoHours => "2h",
KlineInterval::FourHours => "4h",
KlineInterval::SixHours => "6h",
KlineInterval::EightHours => "8h",
KlineInterval::TwelveHours => "12h",
KlineInterval::OneDay => "1d",
KlineInterval::ThreeDays => "3d",
KlineInterval::OneWeek => "1w",
KlineInterval::OneMonth => "1M",
};
serializer.serialize_str(interval)
}
}