bat-markets-mexc 0.3.4

MEXC USDT-M linear futures adapter for bat-markets
Documentation
use serde::Deserialize;
use serde_json::Value;

#[derive(Clone, Debug, Deserialize)]
pub struct RestResponse<T> {
    pub success: bool,
    #[serde(default)]
    pub code: i64,
    #[serde(default)]
    pub message: Option<String>,
    pub data: T,
}

#[derive(Clone, Debug, Deserialize)]
pub struct ServerTimeResponse {
    pub data: i64,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractInfo {
    pub symbol: String,
    pub base_coin: String,
    pub quote_coin: String,
    pub settle_coin: String,
    pub contract_size: Value,
    pub price_scale: u32,
    pub vol_scale: u32,
    #[serde(default)]
    pub amount_scale: Option<u32>,
    pub price_unit: Value,
    pub vol_unit: Value,
    pub min_vol: Value,
    #[serde(default)]
    pub max_leverage: Option<Value>,
    #[serde(default)]
    pub state: Option<i64>,
    #[serde(default)]
    pub future_type: Option<i64>,
    #[serde(default)]
    pub api_allowed: Option<bool>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct PublicEnvelope {
    pub channel: String,
    #[serde(default)]
    pub symbol: Option<String>,
    #[serde(default)]
    pub data: Value,
    #[serde(default)]
    pub ts: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TickerData {
    pub symbol: String,
    pub last_price: Value,
    #[serde(default)]
    pub fair_price: Option<Value>,
    #[serde(default)]
    pub index_price: Option<Value>,
    #[serde(default)]
    pub volume24: Option<Value>,
    #[serde(default)]
    pub amount24: Option<Value>,
    #[serde(default)]
    pub hold_vol: Option<Value>,
    #[serde(default)]
    pub max_bid_price: Option<Value>,
    #[serde(default)]
    pub min_ask_price: Option<Value>,
    #[serde(default)]
    pub timestamp: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct DealData {
    pub p: Value,
    pub v: Value,
    #[serde(rename = "T")]
    pub side: i64,
    #[serde(default)]
    pub t: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct DepthData {
    #[serde(default)]
    pub asks: Vec<Vec<Value>>,
    #[serde(default)]
    pub bids: Vec<Vec<Value>>,
    #[serde(default)]
    pub version: Option<i64>,
    #[serde(default)]
    pub timestamp: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct KlineData {
    #[serde(default)]
    pub symbol: Option<String>,
    #[serde(default)]
    pub interval: Option<String>,
    pub o: Value,
    pub h: Value,
    pub l: Value,
    pub c: Value,
    #[serde(default)]
    pub a: Option<Value>,
    #[serde(default)]
    pub q: Option<Value>,
    #[serde(default)]
    pub t: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct KlineRestData {
    #[serde(default)]
    pub time: Vec<i64>,
    #[serde(default)]
    pub open: Vec<Value>,
    #[serde(default)]
    pub close: Vec<Value>,
    #[serde(default)]
    pub high: Vec<Value>,
    #[serde(default)]
    pub low: Vec<Value>,
    #[serde(default)]
    pub vol: Vec<Value>,
    #[serde(default)]
    pub amount: Vec<Value>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FundingRateData {
    pub symbol: String,
    pub funding_rate: Value,
    #[serde(default)]
    pub next_settle_time: Option<i64>,
    #[serde(default)]
    pub timestamp: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AssetData {
    pub currency: String,
    #[serde(default)]
    pub available_balance: Option<Value>,
    #[serde(default)]
    pub available: Option<Value>,
    #[serde(default)]
    pub wallet_balance: Option<Value>,
    #[serde(default)]
    pub equity: Option<Value>,
    #[serde(default)]
    pub unrealized: Option<Value>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PositionData {
    pub position_id: Value,
    pub symbol: String,
    pub position_type: i64,
    #[serde(default)]
    pub hold_vol: Option<Value>,
    #[serde(default)]
    pub open_avg_price: Option<Value>,
    #[serde(default)]
    pub mark_price: Option<Value>,
    #[serde(default)]
    pub unrealised: Option<Value>,
    #[serde(default)]
    pub unrealized: Option<Value>,
    #[serde(default)]
    pub leverage: Option<Value>,
    #[serde(default)]
    pub open_type: Option<i64>,
    #[serde(default)]
    pub position_mode: Option<i64>,
    #[serde(default)]
    pub update_time: Option<i64>,
    #[serde(default)]
    pub create_time: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderData {
    pub order_id: Value,
    pub symbol: String,
    pub side: i64,
    #[serde(default)]
    pub order_type: Option<i64>,
    #[serde(default)]
    pub category: Option<i64>,
    pub state: i64,
    pub price: Value,
    pub vol: Value,
    #[serde(default)]
    pub deal_vol: Option<Value>,
    #[serde(default)]
    pub deal_avg_price: Option<Value>,
    #[serde(default)]
    pub external_oid: Option<String>,
    #[serde(default)]
    pub reduce_only: Option<bool>,
    #[serde(default)]
    pub create_time: Option<i64>,
    #[serde(default)]
    pub update_time: Option<i64>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExecutionData {
    pub id: Value,
    pub order_id: Value,
    pub symbol: String,
    pub side: i64,
    pub vol: Value,
    pub price: Value,
    #[serde(default)]
    pub fee: Option<Value>,
    #[serde(default)]
    pub fee_currency: Option<String>,
    #[serde(default)]
    pub is_taker: Option<bool>,
    #[serde(default)]
    pub timestamp: Option<Value>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubmitOrderResponse {
    pub data: Option<Value>,
    pub success: bool,
    #[serde(default)]
    pub code: i64,
    #[serde(default)]
    pub message: Option<String>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CancelOrderItem {
    pub order_id: Value,
    #[serde(default)]
    pub error_code: i64,
    #[serde(default)]
    pub error_msg: Option<String>,
}