/*
 * Binance Derivatives Trading USDS Futures WebSocket API
 *
 * OpenAPI Specification for the Binance Derivatives Trading USDS Futures WebSocket 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_usds_futures::websocket_api::models;
use serde::{Deserialize, Deserializer, Serialize, de::Error};
use serde_json::Value;

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AccountInformationResponseResult {
    #[serde(rename = "feeTier", skip_serializing_if = "Option::is_none")]
    pub fee_tier: Option<i64>,
    #[serde(rename = "canTrade", skip_serializing_if = "Option::is_none")]
    pub can_trade: Option<bool>,
    #[serde(rename = "canDeposit", skip_serializing_if = "Option::is_none")]
    pub can_deposit: Option<bool>,
    #[serde(rename = "canWithdraw", skip_serializing_if = "Option::is_none")]
    pub can_withdraw: Option<bool>,
    #[serde(rename = "updateTime", skip_serializing_if = "Option::is_none")]
    pub update_time: Option<i64>,
    #[serde(rename = "multiAssetsMargin", skip_serializing_if = "Option::is_none")]
    pub multi_assets_margin: Option<bool>,
    #[serde(rename = "tradeGroupId", skip_serializing_if = "Option::is_none")]
    pub trade_group_id: Option<i64>,
    #[serde(rename = "totalInitialMargin", skip_serializing_if = "Option::is_none")]
    pub total_initial_margin: Option<String>,
    #[serde(rename = "totalMaintMargin", skip_serializing_if = "Option::is_none")]
    pub total_maint_margin: Option<String>,
    #[serde(rename = "totalWalletBalance", skip_serializing_if = "Option::is_none")]
    pub total_wallet_balance: Option<String>,
    #[serde(
        rename = "totalUnrealizedProfit",
        skip_serializing_if = "Option::is_none"
    )]
    pub total_unrealized_profit: Option<String>,
    #[serde(rename = "totalMarginBalance", skip_serializing_if = "Option::is_none")]
    pub total_margin_balance: Option<String>,
    #[serde(
        rename = "totalPositionInitialMargin",
        skip_serializing_if = "Option::is_none"
    )]
    pub total_position_initial_margin: Option<String>,
    #[serde(
        rename = "totalOpenOrderInitialMargin",
        skip_serializing_if = "Option::is_none"
    )]
    pub total_open_order_initial_margin: Option<String>,
    #[serde(
        rename = "totalCrossWalletBalance",
        skip_serializing_if = "Option::is_none"
    )]
    pub total_cross_wallet_balance: Option<String>,
    #[serde(rename = "totalCrossUnPnl", skip_serializing_if = "Option::is_none")]
    pub total_cross_un_pnl: Option<String>,
    #[serde(rename = "availableBalance", skip_serializing_if = "Option::is_none")]
    pub available_balance: Option<String>,
    #[serde(rename = "maxWithdrawAmount", skip_serializing_if = "Option::is_none")]
    pub max_withdraw_amount: Option<String>,
    #[serde(rename = "assets", skip_serializing_if = "Option::is_none")]
    pub assets: Option<Vec<models::AccountInformationResponseResultAssetsInner>>,
    #[serde(rename = "positions", skip_serializing_if = "Option::is_none")]
    pub positions: Option<Vec<models::AccountInformationResponseResultPositionsInner>>,
}

impl AccountInformationResponseResult {
    #[must_use]
    pub fn new() -> AccountInformationResponseResult {
        AccountInformationResponseResult {
            fee_tier: None,
            can_trade: None,
            can_deposit: None,
            can_withdraw: None,
            update_time: None,
            multi_assets_margin: None,
            trade_group_id: None,
            total_initial_margin: None,
            total_maint_margin: None,
            total_wallet_balance: None,
            total_unrealized_profit: None,
            total_margin_balance: None,
            total_position_initial_margin: None,
            total_open_order_initial_margin: None,
            total_cross_wallet_balance: None,
            total_cross_un_pnl: None,
            available_balance: None,
            max_withdraw_amount: None,
            assets: None,
            positions: None,
        }
    }
}
