use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use crate::Blockchain;
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ticker {
pub symbol: String,
pub first_price: Decimal,
pub last_price: Decimal,
pub price_change: Decimal,
pub price_change_percent: Decimal,
pub high: Decimal,
pub low: Decimal,
pub volume: Decimal,
pub trades: i64,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Market {
pub symbol: String,
pub base_symbol: String,
pub quote_symbol: String,
pub filters: MarketFilters,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarketFilters {
price: PriceFilters,
quantity: QuantityFilters,
leverage: Option<LeverageFilters>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PriceFilters {
min_price: Decimal,
max_price: Option<Decimal>,
tick_size: Decimal,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QuantityFilters {
min_quantity: Decimal,
max_quantity: Option<Decimal>,
step_size: Decimal,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LeverageFilters {
min_leverage: Decimal,
max_leverage: Decimal,
step_size: Decimal,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Token {
pub blockchain: Blockchain,
pub deposit_enabled: bool,
pub minimum_deposit: Decimal,
pub withdrawal_enabled: bool,
pub minimum_withdrawal: Decimal,
pub maximum_withdrawal: Option<Decimal>,
pub withdrawal_fee: Decimal,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderBookDepth {
pub asks: Vec<(Decimal, Decimal)>,
pub bids: Vec<(Decimal, Decimal)>,
pub last_update_id: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Kline {
pub start: String,
pub open: Option<Decimal>,
pub high: Option<Decimal>,
pub low: Option<Decimal>,
pub close: Option<Decimal>,
pub end: Option<String>,
pub volume: Decimal,
pub trades: u64,
}