use serde::Deserialize;
use serde_json::Value;
use super::ExtraFields;
use crate::model::NumberString;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct OrderUpdate {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub tgt_ccy: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub px: NumberString,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub ord_type: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub td_mode: String,
#[serde(default)]
pub acc_fill_sz: NumberString,
#[serde(default)]
pub fill_px: NumberString,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub fill_sz: NumberString,
#[serde(default)]
pub fill_time: NumberString,
#[serde(default)]
pub fill_pnl: NumberString,
#[serde(default)]
pub fill_fee: NumberString,
#[serde(default)]
pub fill_fee_ccy: String,
#[serde(default)]
pub exec_type: String,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub state: String,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub attach_algo_cl_ord_id: String,
#[serde(default)]
pub tp_trigger_px: NumberString,
#[serde(default)]
pub tp_trigger_px_type: String,
#[serde(default)]
pub tp_ord_px: NumberString,
#[serde(default)]
pub sl_trigger_px: NumberString,
#[serde(default)]
pub sl_trigger_px_type: String,
#[serde(default)]
pub sl_ord_px: NumberString,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub rebate_ccy: String,
#[serde(default)]
pub rebate: NumberString,
#[serde(default)]
pub pnl: NumberString,
#[serde(default)]
pub source: String,
#[serde(default)]
pub category: String,
#[serde(default)]
pub reduce_only: String,
#[serde(default)]
pub cancel_source: String,
#[serde(default)]
pub cancel_source_reason: String,
#[serde(default)]
pub quick_mgn_type: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub amend_source: String,
#[serde(default)]
pub req_id: String,
#[serde(default)]
pub code: String,
#[serde(default)]
pub msg: String,
#[serde(default)]
pub px_type: String,
#[serde(default)]
pub px_usd: NumberString,
#[serde(default)]
pub px_vol: NumberString,
#[serde(default)]
pub linked_algo_ord: Value,
#[serde(default)]
pub attach_algo_ords: Vec<Value>,
#[serde(default)]
pub stp_id: String,
#[serde(default)]
pub stp_mode: String,
#[serde(default)]
pub trade_quote_ccy: String,
#[serde(default)]
pub outcome: String,
#[serde(default)]
pub is_elp_taker_access: bool,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub p_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct FillUpdate {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub bill_id: String,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub fill_px: NumberString,
#[serde(default)]
pub fill_sz: NumberString,
#[serde(default)]
pub side: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub exec_type: String,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub fee_rate: NumberString,
#[serde(default)]
pub fill_pnl: NumberString,
#[serde(default)]
pub fill_px_vol: NumberString,
#[serde(default)]
pub fill_px_usd: NumberString,
#[serde(default)]
pub fill_mark_vol: NumberString,
#[serde(default)]
pub fill_fwd_px: NumberString,
#[serde(default)]
pub fill_mark_px: NumberString,
#[serde(default)]
pub fill_idx_px: NumberString,
#[serde(default)]
pub trade_quote_ccy: String,
#[serde(default)]
pub fill_time: NumberString,
#[serde(default)]
pub ts: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct OrderOperationResult {
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub ts: NumberString,
#[serde(default)]
pub req_id: String,
#[serde(default)]
pub s_code: String,
#[serde(default)]
pub s_msg: String,
#[serde(default)]
pub sub_code: String,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct MassCancelOperationResult {
#[serde(default)]
pub result: bool,
#[serde(flatten, default)]
pub extra: ExtraFields,
}