use super::SubscriptionKind;
use rust_decimal::Decimal;
use rustrade_instrument::Side;
use rustrade_macro::{DeSubKind, SerSubKind};
use serde::{Deserialize, Serialize};
use smol_str::SmolStr;
#[derive(
Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, DeSubKind, SerSubKind,
)]
pub struct PublicTrades;
impl SubscriptionKind for PublicTrades {
type Event = PublicTrade;
fn as_str(&self) -> &'static str {
"public_trades"
}
}
impl std::fmt::Display for PublicTrades {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.as_str())
}
}
#[derive(Clone, PartialEq, PartialOrd, Debug, Deserialize, Serialize)]
pub struct PublicTrade {
pub id: SmolStr,
pub price: Decimal,
pub amount: Decimal,
pub side: Option<Side>,
}