Skip to main content

rustrade_data/subscription/
liquidation.rs

1use super::SubscriptionKind;
2use chrono::{DateTime, Utc};
3use rust_decimal::Decimal;
4use rustrade_instrument::Side;
5use serde::{Deserialize, Serialize};
6
7/// Barter [`Subscription`](super::Subscription) [`SubscriptionKind`] that yields [`Liquidation`]
8/// [`MarketEvent<T>`](crate::event::MarketEvent) events.
9#[derive(
10    Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Deserialize, Serialize,
11)]
12pub struct Liquidations;
13
14impl SubscriptionKind for Liquidations {
15    type Event = Liquidation;
16
17    fn as_str(&self) -> &'static str {
18        "liquidations"
19    }
20}
21
22impl std::fmt::Display for Liquidations {
23    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24        write!(f, "{}", self.as_str())
25    }
26}
27
28/// Normalised Barter [`Liquidation`] model.
29#[derive(Clone, Copy, PartialEq, PartialOrd, Debug, Deserialize, Serialize)]
30pub struct Liquidation {
31    pub side: Side,
32    pub price: Decimal,
33    pub quantity: Decimal,
34    pub time: DateTime<Utc>,
35}