use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServerTime {
pub time_second: String,
pub time_nano: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstrumentsInfo {
pub category: String,
pub list: Vec<InstrumentInfo>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstrumentInfo {
pub symbol: String,
#[serde(default)]
pub contract_type: String,
pub status: String,
#[serde(default)]
pub base_coin: String,
#[serde(default)]
pub quote_coin: String,
#[serde(default)]
pub settle_coin: String,
#[serde(default)]
pub launch_time: String,
#[serde(default)]
pub delivery_time: String,
#[serde(default)]
pub delivery_fee_rate: String,
#[serde(default)]
pub price_scale: String,
#[serde(default)]
pub leverage_filter: Option<LeverageFilter>,
#[serde(default)]
pub price_filter: Option<PriceFilter>,
#[serde(default)]
pub lot_size_filter: Option<LotSizeFilter>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LeverageFilter {
pub min_leverage: String,
pub max_leverage: String,
pub leverage_step: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PriceFilter {
pub min_price: String,
pub max_price: String,
pub tick_size: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LotSizeFilter {
#[serde(default)]
pub max_order_qty: String,
#[serde(default)]
pub min_order_qty: String,
#[serde(default)]
pub qty_step: String,
#[serde(default)]
pub post_only_max_order_qty: String,
#[serde(default)]
pub base_precision: String,
#[serde(default)]
pub quote_precision: String,
#[serde(default)]
pub min_order_amt: String,
#[serde(default)]
pub max_order_amt: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Orderbook {
pub s: String,
pub b: Vec<[String; 2]>,
pub a: Vec<[String; 2]>,
pub ts: u64,
pub u: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Tickers {
pub category: String,
pub list: Vec<Ticker>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ticker {
pub symbol: String,
#[serde(default)]
pub last_price: String,
#[serde(default)]
pub index_price: String,
#[serde(default)]
pub mark_price: String,
#[serde(default)]
pub prev_price_24h: String,
#[serde(default)]
pub price_24h_pcnt: String,
#[serde(default)]
pub high_price_24h: String,
#[serde(default)]
pub low_price_24h: String,
#[serde(default)]
pub prev_price_1h: String,
#[serde(default)]
pub open_interest: String,
#[serde(default)]
pub open_interest_value: String,
#[serde(default)]
pub turnover_24h: String,
#[serde(default)]
pub volume_24h: String,
#[serde(default)]
pub funding_rate: String,
#[serde(default)]
pub next_funding_time: String,
#[serde(default)]
pub bid_1_price: String,
#[serde(default)]
pub bid_1_size: String,
#[serde(default)]
pub ask_1_price: String,
#[serde(default)]
pub ask_1_size: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Klines {
pub category: String,
pub symbol: String,
pub list: Vec<Vec<String>>,
}
#[derive(Debug, Clone)]
pub struct Kline {
pub start_time: u64,
pub open: Decimal,
pub high: Decimal,
pub low: Decimal,
pub close: Decimal,
pub volume: Decimal,
pub turnover: Decimal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FundingHistory {
pub category: String,
pub list: Vec<FundingRecord>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FundingRecord {
pub symbol: String,
pub funding_rate: String,
pub funding_rate_timestamp: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RecentTrades {
pub category: String,
pub list: Vec<Trade>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Trade {
pub exec_id: String,
pub symbol: String,
pub price: String,
pub size: String,
pub side: String,
pub time: String,
#[serde(default)]
pub is_block_trade: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OpenInterest {
pub category: String,
pub symbol: String,
pub list: Vec<OpenInterestRecord>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OpenInterestRecord {
pub open_interest: String,
pub timestamp: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskLimits {
pub category: String,
pub list: Vec<RiskLimit>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskLimit {
pub id: i32,
pub symbol: String,
pub risk_limit_value: String,
pub maintenance_margin: String,
pub initial_margin: String,
pub max_leverage: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AdlAlertRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub coin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub balance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_balance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insurance_pnl_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pnl_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub adl_trigger_threshold: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub adl_stop_ratio: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AdlAlertResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<AdlAlertRecord>>,
}
pub type GetAdlAlertResponse = AdlAlertResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryPriceRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delivery_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delivery_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryPriceResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<DeliveryPriceRecord>>,
}
pub type GetDeliveryPriceResponse = DeliveryPriceResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FeeRateLevel {
#[serde(skip_serializing_if = "Option::is_none")]
pub level: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub taker_fee_rate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maker_fee_rate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maker_rebate: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FeeGroup {
#[serde(skip_serializing_if = "Option::is_none")]
pub group_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weighting_factor: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbols_numbers: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbols: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fee_rates: Option<Vec<FeeRateLevel>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FeeGroupInfoResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<FeeGroup>>,
}
pub type GetFeeGroupInfoResponse = FeeGroupInfoResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VolatilityRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub period: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
}
pub type GetHistoricalVolatilityResponse = Vec<VolatilityRecord>;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IndexComponentItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub exchange: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weight: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IndexComponentsResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub index_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub index_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub components: Option<Vec<IndexComponentItem>>,
}
pub type IndexComponentsResponse = IndexComponentsResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InsurancePoolRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub coin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub balance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InsuranceResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<InsurancePoolRecord>>,
}
pub type InsuranceResponse = InsuranceResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LongShortRatioRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub buy_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sell_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LongShortRatioResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<LongShortRatioRecord>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_cursor: Option<String>,
}
pub type LongShortRatioResponse = LongShortRatioResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NewDeliveryPriceRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delivery_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delivery_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NewDeliveryPriceResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<NewDeliveryPriceRecord>>,
}
pub type NewDeliveryPriceResponse = NewDeliveryPriceResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderPriceLimitResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub buy_lmt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sell_lmt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ts: Option<String>,
}
pub type OrderPriceLimitResponse = OrderPriceLimitResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpiOrderbookResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub s: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub b: Option<Vec<Vec<String>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub a: Option<Vec<Vec<String>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ts: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub u: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seq: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cts: Option<i64>,
}
pub type RpiOrderbookResponse = RpiOrderbookResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IndexComponent {
#[serde(skip_serializing_if = "Option::is_none")]
pub exchange: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub spot_pair: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub equivalent_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub multiplier: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weight: Option<String>,
}
pub type GetIndexPriceComponentsResponse = IndexComponentsResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IndexKlineEntry {
pub item: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IndexPriceKlineResult {
pub category: String,
pub symbol: String,
pub list: Vec<IndexKlineEntry>,
}
pub type IndexPriceKlineResponse = IndexPriceKlineResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LotSizeFilterLinear {
pub max_order_qty: String,
pub min_order_qty: String,
pub qty_step: String,
pub post_only_max_order_qty: String,
pub max_mkt_order_qty: String,
pub min_notional_value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LotSizeFilterSpot {
pub base_precision: String,
pub quote_precision: String,
pub min_order_amt: String,
pub max_order_amt: String,
pub max_limit_order_qty: String,
pub max_market_order_qty: String,
pub post_only_max_limit_order_size: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskParameters {
pub price_limit_ratio_x: String,
pub price_limit_ratio_y: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstrumentLinearInverse {
pub symbol: String,
pub contract_type: String,
pub status: String,
pub base_coin: String,
pub quote_coin: String,
pub launch_time: String,
pub delivery_time: String,
pub delivery_fee_rate: String,
pub price_scale: String,
pub leverage_filter: serde_json::Value,
pub price_filter: serde_json::Value,
pub lot_size_filter: LotSizeFilterLinear,
pub unified_margin_trade: bool,
pub funding_interval: i32,
pub settle_coin: String,
pub copy_trading: String,
pub upper_funding_rate: String,
pub lower_funding_rate: String,
pub is_pre_listing: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub pre_listing_info: Option<serde_json::Value>,
pub risk_parameters: RiskParameters,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstrumentSpot {
pub symbol: String,
pub base_coin: String,
pub quote_coin: String,
pub status: String,
pub margin_trading: String,
pub st_tag: String,
pub lot_size_filter: LotSizeFilterSpot,
pub price_filter: serde_json::Value,
pub risk_parameters: RiskParameters,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstrumentOption {
pub symbol: String,
pub options_type: String,
pub status: String,
pub base_coin: String,
pub quote_coin: String,
pub settle_coin: String,
pub launch_time: String,
pub delivery_time: String,
pub price_filter: serde_json::Value,
pub lot_size_filter: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstrumentsInfoResult {
pub category: String,
pub next_page_cursor: String,
pub list: Vec<serde_json::Value>,
}
pub type InstrumentsInfoResponse = InstrumentsInfoResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InsuranceRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub coin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbols: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub balance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
pub type GetInsurancePoolResponse = InsuranceResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KlineEntry {
pub items: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KlineResult {
pub category: String,
pub symbol: String,
pub list: Vec<KlineEntry>,
}
pub type KlineResponse = KlineResult;
pub type GetLongShortRatioResponse = LongShortRatioResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarkKlineEntry {
#[serde(skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarkPriceKlineResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<MarkKlineEntry>>,
}
pub type MarkPriceKlineResponse = MarkPriceKlineResult;
pub type GetNewDeliveryPriceResponse = NewDeliveryPriceResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OpenInterestResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<OpenInterestRecord>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_cursor: Option<String>,
}
pub type OpenInterestResponse = OpenInterestResult;
pub type GetOrderPriceLimitResponse = OrderPriceLimitResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderbookLevel {
#[serde(skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderbookResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub s: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub b: Option<Vec<OrderbookLevel>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub a: Option<Vec<OrderbookLevel>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ts: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub u: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seq: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cts: Option<i64>,
}
pub type OrderbookResponse = OrderbookResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PremiumIndexKlineEntry {
#[serde(skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PremiumIndexKlineResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<PremiumIndexKlineEntry>>,
}
pub type PremiumIndexKlineResponse = PremiumIndexKlineResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TradeRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub exec_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub side: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_block_trade: Option<bool>,
#[serde(rename = "isRPITrade", skip_serializing_if = "Option::is_none")]
pub is_rpi_trade: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seq: Option<String>,
#[serde(rename = "mP", skip_serializing_if = "Option::is_none")]
pub m_p: Option<String>,
#[serde(rename = "iP", skip_serializing_if = "Option::is_none")]
pub i_p: Option<String>,
#[serde(rename = "mIv", skip_serializing_if = "Option::is_none")]
pub m_iv: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iv: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RecentTradeResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<TradeRecord>>,
}
pub type RecentTradeResponse = RecentTradeResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskLimitTier {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub risk_limit_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maintenance_margin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub initial_margin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_lowest_risk: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_leverage: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mm_deduction: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskLimitResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<RiskLimitTier>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_cursor: Option<String>,
}
pub type RiskLimitResponse = RiskLimitResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpiOrderbookLevel {
#[serde(skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<String>>,
}
pub type GetRpiOrderbookResponse = RpiOrderbookResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TickerLinearInverse {
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub index_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mark_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prev_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_24h_pcnt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub high_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub low_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prev_price_1h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub open_interest: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub open_interest_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub turnover_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub funding_rate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_funding_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub funding_interval_hour: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub funding_cap: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TickerSpot {
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prev_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_24h_pcnt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub high_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub low_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub turnover_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usd_index_price: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TickerOption {
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid1_iv: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ask1_iv: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub high_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub low_price_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mark_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub index_price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mark_iv: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub open_interest: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub turnover_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume_24h: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gamma: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vega: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub theta: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TickersResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<serde_json::Value>>,
}
pub type TickersResponse = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServerTimeResult {
pub time_second: String,
pub time_nano: String,
}
pub type ServerTimeResponse = ServerTimeResult;