use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BatchSpotContract {
pub order_list: Vec<SpotOrderRequest>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotOrderRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub allow_max_time_window: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cancel_after: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_oid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_timestamp: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub funds: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iceberg: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub post_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub remark: Option<String>,
pub side: Side,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stp: Option<Stp>,
pub symbol: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_in_force: Option<TimeInForce>,
#[serde(rename = "type")]
pub spot_contract_type: TradeType,
#[serde(skip_serializing_if = "Option::is_none")]
pub visible_size: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum Side {
Buy,
Sell,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TradeType {
Limit,
Market,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Stp {
#[serde(rename = "CB")]
Cb,
#[serde(rename = "CN")]
Cn,
#[serde(rename = "CO")]
Co,
#[serde(rename = "DC")]
Dc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TimeInForce {
#[serde(rename = "FOK")]
Fok,
#[serde(rename = "GTC")]
Gtc,
#[serde(rename = "GTT")]
Gtt,
#[serde(rename = "IOC")]
Ioc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotCancelRequest {
pub order_id: String,
pub cancel_size: String,
pub symbol: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotCanceledData {
pub cancel_size: String,
pub order_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchOrderResult {
pub code: String,
pub data: Vec<SpotOrderResult>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotData {
pub client_oid: String,
pub order_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotOrderResult {
pub client_oid: Option<String>,
pub fail_msg: Option<String>,
pub order_id: Option<String>,
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotDatum {
pub active: bool,
pub cancel_after: i64,
pub cancel_exist: bool,
pub cancelled_funds: String,
pub cancelled_size: String,
pub channel: String,
pub client_oid: String,
pub created_at: i64,
pub deal_funds: String,
pub deal_size: String,
pub fee: String,
pub fee_currency: String,
pub funds: String,
pub hidden: bool,
pub iceberg: bool,
pub id: String,
pub in_order_book: bool,
pub last_updated_at: i64,
pub op_type: String,
pub post_only: bool,
pub price: String,
pub remain_funds: String,
pub remain_size: String,
pub remark: Option<String>,
pub side: Side,
pub size: String,
pub stp: Option<Stp>,
pub symbol: String,
pub tags: Option<String>,
pub tax: String,
pub time_in_force: TimeInForce,
pub trade_type: String,
#[serde(rename = "type")]
pub datum_type: Type,
pub visible_size: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Type {
Limit,
Market,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CancelAllRes {
pub failed_symbols: Vec<FailedSymbol>,
pub succeed_symbols: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FailedSymbol {
pub error: Option<String>,
pub symbol: Option<String>,
}