use super::reject::RejectReason;
use crate::{book::protocol::command::Side, types::*};
use serde::{Deserialize, Serialize};
use smallvec::SmallVec;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct TradeSummary {
pub maker_order_id: OrderId,
pub maker_side: Side,
pub taker_order_id: OrderId,
pub taker_side: Side,
pub price: FillPrice,
pub quantity: FillQuantity,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[allow(clippy::large_enum_variant)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Response {
Ok {
order_id: Option<OrderId>,
trades: SmallVec<[TradeSummary; 4]>,
liability_delta: Money,
tx_start_seq: Option<u64>,
tx_len: u16,
},
Rejected {
reason: RejectReason,
tx_start_seq: Option<u64>,
tx_len: u16,
},
Fatal {
tx_start_seq: Option<u64>,
tx_len: u16,
},
}
impl Response {
pub fn fatal() -> Self {
Self::Fatal {
tx_start_seq: None,
tx_len: 0,
}
}
}