bluefin_api 1.13.0

Bluefin API
Documentation
/*
 * Bluefin API
 *
 * Bluefin API
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Trade {
    /// Trade ID
    #[serde(rename = "id")]
    pub id: String,
    /// Client order ID.
    #[serde(rename = "clientOrderId", skip_serializing_if = "Option::is_none")]
    pub client_order_id: Option<String>,
    /// Market address.
    #[serde(rename = "symbol", skip_serializing_if = "Option::is_none")]
    pub symbol: Option<String>,
    /// Order hash.
    #[serde(rename = "orderHash", skip_serializing_if = "Option::is_none")]
    pub order_hash: Option<String>,
    #[serde(rename = "orderType", skip_serializing_if = "Option::is_none")]
    pub order_type: Option<models::OrderType>,
    #[serde(rename = "tradeType", skip_serializing_if = "Option::is_none")]
    pub trade_type: Option<models::TradeType>,
    #[serde(rename = "side")]
    pub side: models::TradeSide,
    /// Indicates if the user was a maker to the trade.
    #[serde(rename = "isMaker", skip_serializing_if = "Option::is_none")]
    pub is_maker: Option<bool>,
    /// Trade price (e9 format).
    #[serde(rename = "priceE9")]
    pub price_e9: String,
    /// Trade quantity (e9 format).
    #[serde(rename = "quantityE9")]
    pub quantity_e9: String,
    /// Quote quantity (e9 format).
    #[serde(rename = "quoteQuantityE9")]
    pub quote_quantity_e9: String,
    /// Realized profit and loss (e9 format).
    #[serde(rename = "realizedPnlE9", skip_serializing_if = "Option::is_none")]
    pub realized_pnl_e9: Option<String>,
    #[serde(rename = "positionSide", skip_serializing_if = "Option::is_none")]
    pub position_side: Option<models::PositionSide>,
    /// Trading fee (e9 format).
    #[serde(rename = "tradingFeeE9", skip_serializing_if = "Option::is_none")]
    pub trading_fee_e9: Option<String>,
    /// Asset used for trading fee.
    #[serde(rename = "tradingFeeAsset", skip_serializing_if = "Option::is_none")]
    pub trading_fee_asset: Option<String>,
    /// Gas fee.
    #[serde(rename = "gasFeeE9", skip_serializing_if = "Option::is_none")]
    pub gas_fee_e9: Option<String>,
    /// Asset used for gas fee.
    #[serde(rename = "gasFeeAsset", skip_serializing_if = "Option::is_none")]
    pub gas_fee_asset: Option<String>,
    /// Mark price at the time of trade execution (e9 format).
    #[serde(rename = "markPriceE9", skip_serializing_if = "Option::is_none")]
    pub mark_price_e9: Option<String>,
    /// Oracle price at the time of trade execution (e9 format).
    #[serde(rename = "oraclePriceE9", skip_serializing_if = "Option::is_none")]
    pub oracle_price_e9: Option<String>,
    /// Trade timestamp in milliseconds since Unix epoch.
    #[serde(rename = "executedAtMillis")]
    pub executed_at_millis: i64,
}

impl Trade {
    pub fn new(id: String, side: models::TradeSide, price_e9: String, quantity_e9: String, quote_quantity_e9: String, executed_at_millis: i64) -> Trade {
        Trade {
            id,
            client_order_id: None,
            symbol: None,
            order_hash: None,
            order_type: None,
            trade_type: None,
            side,
            is_maker: None,
            price_e9,
            quantity_e9,
            quote_quantity_e9,
            realized_pnl_e9: None,
            position_side: None,
            trading_fee_e9: None,
            trading_fee_asset: None,
            gas_fee_e9: None,
            gas_fee_asset: None,
            mark_price_e9: None,
            oracle_price_e9: None,
            executed_at_millis,
        }
    }
}