use serde::Deserialize;
use super::ExtraFields;
use crate::model::NumberString;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RebateTrans {
#[serde(default)]
pub rebate: NumberString,
#[serde(default)]
pub rebate_ccy: String,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct TriggerParam {
#[serde(default)]
pub trigger_action: String,
#[serde(default)]
pub trigger_strategy: String,
#[serde(default)]
pub delay_seconds: String,
#[serde(default)]
pub trigger_time: String,
#[serde(default)]
pub trigger_type: String,
#[serde(default)]
pub timeframe: String,
#[serde(default)]
pub thold: String,
#[serde(default)]
pub trigger_cond: String,
#[serde(default)]
pub time_period: String,
#[serde(default)]
pub trigger_px: String,
#[serde(default)]
pub stop_type: String,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct GridOrderUpdate {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub algo_ord_type: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub rebate_trans: Vec<RebateTrans>,
#[serde(default)]
pub trigger_params: Vec<TriggerParam>,
#[serde(default)]
pub max_px: NumberString,
#[serde(default)]
pub min_px: NumberString,
#[serde(default)]
pub grid_num: NumberString,
#[serde(default)]
pub run_type: String,
#[serde(default)]
pub tp_trigger_px: NumberString,
#[serde(default)]
pub sl_trigger_px: NumberString,
#[serde(default)]
pub trade_num: NumberString,
#[serde(default)]
pub arbitrage_num: NumberString,
#[serde(default)]
pub single_amt: NumberString,
#[serde(default)]
pub per_min_profit_rate: NumberString,
#[serde(default)]
pub per_max_profit_rate: NumberString,
#[serde(default)]
pub run_px: NumberString,
#[serde(default)]
pub total_pnl: NumberString,
#[serde(default)]
pub pnl_ratio: NumberString,
#[serde(default)]
pub investment: NumberString,
#[serde(default)]
pub grid_profit: NumberString,
#[serde(default)]
pub float_profit: NumberString,
#[serde(default)]
pub total_annualized_rate: NumberString,
#[serde(default)]
pub annualized_rate: NumberString,
#[serde(default)]
pub cancel_type: String,
#[serde(default)]
pub stop_type: String,
#[serde(default)]
pub active_ord_num: NumberString,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub profit_sharing_ratio: String,
#[serde(default)]
pub copy_type: String,
#[serde(default)]
pub trade_quote_ccy: String,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub p_time: NumberString,
#[serde(default)]
pub quote_sz: NumberString,
#[serde(default)]
pub base_sz: NumberString,
#[serde(default)]
pub cur_quote_sz: NumberString,
#[serde(default)]
pub cur_base_sz: NumberString,
#[serde(default)]
pub profit: NumberString,
#[serde(default)]
pub stop_result: String,
#[serde(default)]
pub direction: String,
#[serde(default)]
pub base_pos: bool,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub actual_lever: NumberString,
#[serde(default)]
pub liq_px: NumberString,
#[serde(default)]
pub ord_frozen: NumberString,
#[serde(default)]
pub avail_eq: NumberString,
#[serde(default)]
pub eq: NumberString,
#[serde(default)]
pub tp_ratio: NumberString,
#[serde(default)]
pub sl_ratio: NumberString,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub funding_fee: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
pub type TradingBotUpdate = GridOrderUpdate;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct GridPositionUpdate {
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub upl_ratio: NumberString,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub liq_px: NumberString,
#[serde(default)]
pub mark_px: NumberString,
#[serde(default)]
pub last: NumberString,
#[serde(default)]
pub notional_usd: NumberString,
#[serde(default)]
pub adl: String,
#[serde(default)]
pub mgn_ratio: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[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 GridSubOrderUpdate {
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub algo_ord_type: String,
#[serde(default)]
pub group_id: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub td_mode: String,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub ord_type: String,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub state: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub px: NumberString,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub rebate: NumberString,
#[serde(default)]
pub rebate_ccy: String,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub acc_fill_sz: NumberString,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pnl: NumberString,
#[serde(default)]
pub ct_val: NumberString,
#[serde(default)]
pub lever: NumberString,
#[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 RecurringBuyAllocation {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub ratio: NumberString,
#[serde(default)]
pub min_px: String,
#[serde(default)]
pub max_px: String,
#[serde(default)]
pub total_amt: NumberString,
#[serde(default)]
pub profit: NumberString,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub px: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RecurringBuyOrderUpdate {
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub algo_ord_type: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub stgy_name: String,
#[serde(default)]
pub recurring_list: Vec<RecurringBuyAllocation>,
#[serde(default)]
pub period: String,
#[serde(default)]
pub recurring_day: String,
#[serde(default)]
pub recurring_hour: String,
#[serde(default)]
pub recurring_time: String,
#[serde(default)]
pub time_zone: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub investment_amt: NumberString,
#[serde(default)]
pub investment_ccy: String,
#[serde(default)]
pub next_invest_time: NumberString,
#[serde(default)]
pub total_pnl: NumberString,
#[serde(default)]
pub total_ann_rate: NumberString,
#[serde(default)]
pub pnl_ratio: NumberString,
#[serde(default)]
pub mkt_cap: NumberString,
#[serde(default)]
pub cycles: NumberString,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub trade_quote_ccy: String,
#[serde(default)]
pub recurring_time_type: String,
#[serde(default)]
pub recurring_time_minutes: String,
#[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 CopyTradingNotification {
#[serde(default)]
pub info_type: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub sub_pos_id: String,
#[serde(default)]
pub unique_code: String,
#[serde(default)]
pub max_lead_trader_num: NumberString,
#[serde(default)]
pub min_lead_eq: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}