use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Trade {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "clientOrderId", skip_serializing_if = "Option::is_none")]
pub client_order_id: Option<String>,
#[serde(rename = "symbol", skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(rename = "orderHash", skip_serializing_if = "Option::is_none")]
pub order_hash: Option<String>,
#[serde(rename = "orderType", skip_serializing_if = "Option::is_none")]
pub order_type: Option<models::OrderType>,
#[serde(rename = "tradeType", skip_serializing_if = "Option::is_none")]
pub trade_type: Option<models::TradeType>,
#[serde(rename = "side")]
pub side: models::TradeSide,
#[serde(rename = "isMaker", skip_serializing_if = "Option::is_none")]
pub is_maker: Option<bool>,
#[serde(rename = "priceE9")]
pub price_e9: String,
#[serde(rename = "quantityE9")]
pub quantity_e9: String,
#[serde(rename = "quoteQuantityE9")]
pub quote_quantity_e9: String,
#[serde(rename = "realizedPnlE9", skip_serializing_if = "Option::is_none")]
pub realized_pnl_e9: Option<String>,
#[serde(rename = "positionSide", skip_serializing_if = "Option::is_none")]
pub position_side: Option<models::PositionSide>,
#[serde(rename = "tradingFeeE9", skip_serializing_if = "Option::is_none")]
pub trading_fee_e9: Option<String>,
#[serde(rename = "tradingFeeAsset", skip_serializing_if = "Option::is_none")]
pub trading_fee_asset: Option<String>,
#[serde(rename = "gasFeeE9", skip_serializing_if = "Option::is_none")]
pub gas_fee_e9: Option<String>,
#[serde(rename = "gasFeeAsset", skip_serializing_if = "Option::is_none")]
pub gas_fee_asset: Option<String>,
#[serde(rename = "markPriceE9", skip_serializing_if = "Option::is_none")]
pub mark_price_e9: Option<String>,
#[serde(rename = "oraclePriceE9", skip_serializing_if = "Option::is_none")]
pub oracle_price_e9: Option<String>,
#[serde(rename = "executedAtMillis")]
pub executed_at_millis: i64,
}
impl Trade {
pub fn new(id: String, side: models::TradeSide, price_e9: String, quantity_e9: String, quote_quantity_e9: String, executed_at_millis: i64) -> Trade {
Trade {
id,
client_order_id: None,
symbol: None,
order_hash: None,
order_type: None,
trade_type: None,
side,
is_maker: None,
price_e9,
quantity_e9,
quote_quantity_e9,
realized_pnl_e9: None,
position_side: None,
trading_fee_e9: None,
trading_fee_asset: None,
gas_fee_e9: None,
gas_fee_asset: None,
mark_price_e9: None,
oracle_price_e9: None,
executed_at_millis,
}
}
}