barter_data/subscription/
liquidation.rs

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