/*
 * Binance Derivatives Trading COIN Futures REST API
 *
 * OpenAPI Specification for the Binance Derivatives Trading COIN Futures REST API
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

#![allow(unused_imports)]
use crate::derivatives_trading_coin_futures::rest_api::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ExchangeInformationResponseSymbolsInner {
    #[serde(rename = "filters", skip_serializing_if = "Option::is_none")]
    pub filters: Option<Vec<models::ExchangeInformationResponseSymbolsInnerFiltersInner>>,
    #[serde(rename = "orderTypes", skip_serializing_if = "Option::is_none")]
    pub order_types: Option<Vec<String>>,
    #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
    pub time_in_force: Option<Vec<String>>,
    #[serde(rename = "liquidationFee", skip_serializing_if = "Option::is_none")]
    pub liquidation_fee: Option<String>,
    #[serde(rename = "marketTakeBound", skip_serializing_if = "Option::is_none")]
    pub market_take_bound: Option<String>,
    #[serde(rename = "symbol", skip_serializing_if = "Option::is_none")]
    pub symbol: Option<String>,
    #[serde(rename = "pair", skip_serializing_if = "Option::is_none")]
    pub pair: Option<String>,
    #[serde(rename = "contractType", skip_serializing_if = "Option::is_none")]
    pub contract_type: Option<String>,
    #[serde(rename = "deliveryDate", skip_serializing_if = "Option::is_none")]
    pub delivery_date: Option<i64>,
    #[serde(rename = "onboardDate", skip_serializing_if = "Option::is_none")]
    pub onboard_date: Option<i64>,
    #[serde(rename = "contractStatus", skip_serializing_if = "Option::is_none")]
    pub contract_status: Option<String>,
    #[serde(rename = "contractSize", skip_serializing_if = "Option::is_none")]
    pub contract_size: Option<i64>,
    #[serde(rename = "quoteAsset", skip_serializing_if = "Option::is_none")]
    pub quote_asset: Option<String>,
    #[serde(rename = "baseAsset", skip_serializing_if = "Option::is_none")]
    pub base_asset: Option<String>,
    #[serde(rename = "marginAsset", skip_serializing_if = "Option::is_none")]
    pub margin_asset: Option<String>,
    #[serde(rename = "pricePrecision", skip_serializing_if = "Option::is_none")]
    pub price_precision: Option<i64>,
    #[serde(rename = "quantityPrecision", skip_serializing_if = "Option::is_none")]
    pub quantity_precision: Option<i64>,
    #[serde(rename = "baseAssetPrecision", skip_serializing_if = "Option::is_none")]
    pub base_asset_precision: Option<i64>,
    #[serde(rename = "quotePrecision", skip_serializing_if = "Option::is_none")]
    pub quote_precision: Option<i64>,
    #[serde(rename = "equalQtyPrecision", skip_serializing_if = "Option::is_none")]
    pub equal_qty_precision: Option<i64>,
    #[serde(rename = "triggerProtect", skip_serializing_if = "Option::is_none")]
    pub trigger_protect: Option<String>,
    #[serde(rename = "maintMarginPercent", skip_serializing_if = "Option::is_none")]
    pub maint_margin_percent: Option<String>,
    #[serde(
        rename = "requiredMarginPercent",
        skip_serializing_if = "Option::is_none"
    )]
    pub required_margin_percent: Option<String>,
    #[serde(rename = "underlyingType", skip_serializing_if = "Option::is_none")]
    pub underlying_type: Option<String>,
    #[serde(rename = "underlyingSubType", skip_serializing_if = "Option::is_none")]
    pub underlying_sub_type: Option<Vec<String>>,
}

impl ExchangeInformationResponseSymbolsInner {
    #[must_use]
    pub fn new() -> ExchangeInformationResponseSymbolsInner {
        ExchangeInformationResponseSymbolsInner {
            filters: None,
            order_types: None,
            time_in_force: None,
            liquidation_fee: None,
            market_take_bound: None,
            symbol: None,
            pair: None,
            contract_type: None,
            delivery_date: None,
            onboard_date: None,
            contract_status: None,
            contract_size: None,
            quote_asset: None,
            base_asset: None,
            margin_asset: None,
            price_precision: None,
            quantity_precision: None,
            base_asset_precision: None,
            quote_precision: None,
            equal_qty_precision: None,
            trigger_protect: None,
            maint_margin_percent: None,
            required_margin_percent: None,
            underlying_type: None,
            underlying_sub_type: None,
        }
    }
}
