Skip to main content

binance/margin/
enums.rs

1//! Enum definitions for the Binance Margin Trading API.
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Deserialize, Serialize, PartialEq)]
6pub enum OrderSide {
7    BUY,
8    SELL,
9}
10
11#[derive(Debug, Deserialize, Serialize, PartialEq)]
12#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
13pub enum OrderType {
14    Limit,
15    Market,
16    StopLoss,
17    StopLossLimit,
18    TakeProfit,
19    TakeProfitLimit,
20    LimitMaker,
21}
22
23#[derive(Debug, Deserialize, Serialize, PartialEq)]
24pub enum TimeInForce {
25    /// Good Til Canceled.
26    GTC,
27    /// Immediate Or Cancel.
28    IOC,
29    /// Fill or Kill.
30    FOK,
31}
32
33#[derive(Debug, Deserialize, Serialize, PartialEq)]
34#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
35pub enum OrderStatus {
36    New,
37    PartiallyFilled,
38    Filled,
39    Canceled,
40    PendingCancel,
41    Rejected,
42    Expired,
43    ExpiredInMatch,
44}
45
46#[derive(Debug, Deserialize, Serialize, PartialEq)]
47pub enum OrderResponseType {
48    ACK,
49    RESULT,
50    FULL,
51}
52
53/// Margin order side-effect — controls auto-borrow/repay behaviour.
54#[derive(Debug, Deserialize, Serialize, PartialEq)]
55#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
56pub enum SideEffectType {
57    NoSideEffect,
58    MarginBuy,
59    AutoRepay,
60    AutoBorrowRepay,
61}
62
63/// Self-trade prevention mode.
64#[derive(Debug, Deserialize, Serialize, PartialEq)]
65#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
66pub enum STPMode {
67    None,
68    ExpireMaker,
69    ExpireTaker,
70    ExpireBoth,
71    Decrement,
72}
73
74/// Whether a margin operation targets the isolated or cross-margin account.
75///
76/// Serialised as the string `"TRUE"` / `"FALSE"` that Binance expects.
77#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq)]
78#[serde(rename_all = "UPPERCASE")]
79pub enum IsIsolated {
80    True,
81    False,
82}
83
84#[derive(Debug, Deserialize, Serialize, PartialEq)]
85#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
86pub enum MarginLevelStatus {
87    Excessive,
88    Normal,
89    MarginCall,
90    PreLiquidation,
91    ForceLiquidation,
92}
93
94#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
95pub enum KlineInterval {
96    #[serde(rename = "1s")]
97    Second1,
98    #[serde(rename = "1m")]
99    Minute1,
100    #[serde(rename = "3m")]
101    Minute3,
102    #[serde(rename = "5m")]
103    Minute5,
104    #[serde(rename = "15m")]
105    Minute15,
106    #[serde(rename = "30m")]
107    Minute30,
108    #[serde(rename = "1h")]
109    Hour1,
110    #[serde(rename = "2h")]
111    Hour2,
112    #[serde(rename = "4h")]
113    Hour4,
114    #[serde(rename = "6h")]
115    Hour6,
116    #[serde(rename = "8h")]
117    Hour8,
118    #[serde(rename = "12h")]
119    Hour12,
120    #[serde(rename = "1d")]
121    Day1,
122    #[serde(rename = "3d")]
123    Day3,
124    #[serde(rename = "1w")]
125    Week1,
126    #[serde(rename = "1M")]
127    Month1,
128}