use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Trade {
#[serde(rename = "trade_id")]
pub trade_id: i64,
#[serde(rename = "tx_hash")]
pub tx_hash: String,
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "market_id")]
pub market_id: i32,
#[serde(rename = "size")]
pub size: String,
#[serde(rename = "price")]
pub price: String,
#[serde(rename = "usd_amount")]
pub usd_amount: String,
#[serde(rename = "ask_id")]
pub ask_id: i64,
#[serde(rename = "bid_id")]
pub bid_id: i64,
#[serde(rename = "ask_account_id")]
pub ask_account_id: i64,
#[serde(rename = "bid_account_id")]
pub bid_account_id: i64,
#[serde(rename = "is_maker_ask")]
pub is_maker_ask: bool,
#[serde(rename = "block_height")]
pub block_height: i64,
#[serde(rename = "timestamp")]
pub timestamp: i64,
#[serde(rename = "taker_fee")]
pub taker_fee: i32,
#[serde(rename = "taker_position_size_before")]
pub taker_position_size_before: String,
#[serde(rename = "taker_entry_quote_before")]
pub taker_entry_quote_before: String,
#[serde(rename = "taker_initial_margin_fraction_before")]
pub taker_initial_margin_fraction_before: i32,
#[serde(rename = "taker_position_sign_changed")]
pub taker_position_sign_changed: bool,
#[serde(rename = "maker_fee")]
pub maker_fee: i32,
#[serde(rename = "maker_position_size_before")]
pub maker_position_size_before: String,
#[serde(rename = "maker_entry_quote_before")]
pub maker_entry_quote_before: String,
#[serde(rename = "maker_initial_margin_fraction_before")]
pub maker_initial_margin_fraction_before: i32,
#[serde(rename = "maker_position_sign_changed")]
pub maker_position_sign_changed: bool,
}
impl Trade {
pub fn new(
trade_id: i64,
tx_hash: String,
r#type: Type,
market_id: i32,
size: String,
price: String,
usd_amount: String,
ask_id: i64,
bid_id: i64,
ask_account_id: i64,
bid_account_id: i64,
is_maker_ask: bool,
block_height: i64,
timestamp: i64,
taker_fee: i32,
taker_position_size_before: String,
taker_entry_quote_before: String,
taker_initial_margin_fraction_before: i32,
taker_position_sign_changed: bool,
maker_fee: i32,
maker_position_size_before: String,
maker_entry_quote_before: String,
maker_initial_margin_fraction_before: i32,
maker_position_sign_changed: bool,
) -> Trade {
Trade {
trade_id,
tx_hash,
r#type,
market_id,
size,
price,
usd_amount,
ask_id,
bid_id,
ask_account_id,
bid_account_id,
is_maker_ask,
block_height,
timestamp,
taker_fee,
taker_position_size_before,
taker_entry_quote_before,
taker_initial_margin_fraction_before,
taker_position_sign_changed,
maker_fee,
maker_position_size_before,
maker_entry_quote_before,
maker_initial_margin_fraction_before,
maker_position_sign_changed,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "trade")]
Trade,
#[serde(rename = "liquidation")]
Liquidation,
#[serde(rename = "deleverage")]
Deleverage,
}
impl Default for Type {
fn default() -> Type {
Self::Trade
}
}