use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use super::common::{OrderId, Side, Timestamp};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Fill {
#[serde(rename = "tdt")]
pub traded_at: Timestamp,
#[serde(rename = "aid")]
pub asset_id: String,
#[serde(rename = "anm")]
pub asset_name: String,
#[serde(rename = "p", with = "rust_decimal::serde::str")]
pub price: Decimal,
#[serde(rename = "pc")]
pub price_currency: String,
#[serde(rename = "pn")]
pub price_notation: String,
#[serde(rename = "q", with = "rust_decimal::serde::str")]
pub quantity: Decimal,
#[serde(rename = "qc")]
pub quantity_currency: String,
#[serde(rename = "qn")]
pub quantity_notation: String,
#[serde(rename = "ve")]
pub venue_of_execution: String,
#[serde(rename = "pdt")]
pub published_at: Timestamp,
#[serde(rename = "vp")]
pub venue_of_publication: String,
#[serde(rename = "tid")]
pub trade_id: String,
#[serde(rename = "oid")]
pub order_id: OrderId,
#[serde(rename = "s", default, skip_serializing_if = "Option::is_none")]
pub side: Option<Side>,
#[serde(rename = "im")]
pub is_maker: bool,
}