use serde::Deserialize;
#[derive(Deserialize, Debug, Clone)]
pub struct BybitTickerResponse {
pub topic: String,
#[serde(rename = "type")]
pub ty: String,
pub cs: i64,
pub ts: u64,
pub data: BybitTickerData,
}
#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct BybitTickerData {
pub ts: Option<u64>,
pub symbol: String,
pub tick_direction: Option<TickDirection>,
pub price_24h_pcnt: Option<String>,
pub last_price: Option<String>,
pub prev_price_24h: Option<String>,
pub high_price_24h: Option<String>,
pub low_price_24h: Option<String>,
pub prev_price_1h: Option<String>,
pub mark_price: Option<String>,
pub index_price: Option<String>,
pub open_interest: Option<String>,
pub open_interest_value: Option<String>,
pub turnover_24h: Option<String>,
pub volume_24h: Option<String>,
pub next_funding_time: Option<String>,
pub funding_rate: Option<String>,
pub bid1_price: Option<String>,
pub bid1_size: Option<String>,
pub ask1_price: Option<String>,
pub ask1_size: Option<String>,
pub delivery_time: Option<u64>,
pub basis_rate: Option<String>,
pub delivery_fee_rate: Option<String>,
pub predicted_delivery_price: Option<String>,
pub pre_open_price: Option<String>,
pub pre_qty: Option<String>,
pub cur_pre_listing_phase: Option<CurPreListingPhase>,
pub funding_interval_hour: Option<String>,
pub funding_cap: Option<String>,
pub basis_rate_year: Option<String>,
}
#[derive(Deserialize, Debug, Clone)]
pub enum TickDirection {
PlusTick,
ZeroPlusTick,
MinusTick,
ZeroMinusTick,
}
#[derive(Default, Deserialize, Debug, Clone)]
pub enum CurPreListingPhase {
#[default]
#[serde(rename = "")]
Empty,
NotStarted,
Finished,
CallAuction,
CallAuctionNoCancel,
CrossMatching,
ContinuousTrading,
}