1use crate::data::instrument_type::OkxInstrumentType;
2use chrono::{DateTime, Utc};
3use rust_decimal::Decimal;
4use serde::Deserialize;
5use serde_with::{TimestampMilliSeconds, formats::Flexible};
6use xapi_shared::data::crypto_symbol::CryptoSymbol;
7
8#[serde_with::serde_as]
9#[derive(Debug, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct OkxTicker {
12 #[serde(rename = "instType")]
13 pub instrument_type: OkxInstrumentType,
14 #[serde(rename = "instId")]
15 pub instrument_id: CryptoSymbol,
16 pub last: Decimal,
17 #[serde(rename = "lastSz")]
18 pub last_size: Decimal,
19 #[serde(rename = "askPx")]
20 pub ask_price: Decimal,
21 #[serde(rename = "askSz")]
22 pub ask_size: Decimal,
23 #[serde(rename = "bidPx")]
24 pub bid_price: Decimal,
25 #[serde(rename = "bidSz")]
26 pub bid_size: Decimal,
27 #[serde(rename = "open24h")]
28 pub open_24h: Decimal,
29 #[serde(rename = "high24h")]
30 pub high_24h: Decimal,
31 #[serde(rename = "low24h")]
32 pub low_24h: Decimal,
33 #[serde(rename = "volCcy24h")]
34 pub volume_currency_24h: Decimal,
35 #[serde(rename = "vol24h")]
36 pub volume_24h: Decimal,
37 #[serde(rename = "sodUtc0")]
38 pub start_of_day_utc0: Decimal,
39 #[serde(rename = "sodUtc8")]
40 pub start_of_day_utc8: Decimal,
41 #[serde_as(as = "TimestampMilliSeconds<String, Flexible>")]
42 pub ts: DateTime<Utc>,
43}