#[allow(unused_imports)]
use super::*;
#[allow(unused_imports)]
use crate::ids::*;
#[allow(unused_imports)]
use crate::timestamp::Timestamp;
#[allow(unused_imports)]
use rust_decimal::Decimal;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Position {
#[serde(
rename = "instrument",
default,
skip_serializing_if = "Option::is_none"
)]
pub instrument: Option<InstrumentName>,
#[serde(rename = "pl", default, skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub pl: Option<Decimal>,
#[serde(
rename = "unrealizedPL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub unrealized_pl: Option<Decimal>,
#[serde(
rename = "marginUsed",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub margin_used: Option<Decimal>,
#[serde(
rename = "resettablePL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub resettable_pl: Option<Decimal>,
#[serde(rename = "financing", default, skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub financing: Option<Decimal>,
#[serde(
rename = "commission",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub commission: Option<Decimal>,
#[serde(
rename = "dividendAdjustment",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub dividend_adjustment: Option<Decimal>,
#[serde(
rename = "guaranteedExecutionFees",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub guaranteed_execution_fees: Option<Decimal>,
#[serde(rename = "long", default, skip_serializing_if = "Option::is_none")]
pub long: Option<PositionSide>,
#[serde(rename = "short", default, skip_serializing_if = "Option::is_none")]
pub short: Option<PositionSide>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PositionSide {
#[serde(rename = "units", default, skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub units: Option<Decimal>,
#[serde(
rename = "averagePrice",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub average_price: Option<Decimal>,
#[serde(rename = "tradeIDs", default, skip_serializing_if = "Option::is_none")]
pub trade_ids: Option<Vec<TradeID>>,
#[serde(rename = "pl", default, skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub pl: Option<Decimal>,
#[serde(
rename = "unrealizedPL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub unrealized_pl: Option<Decimal>,
#[serde(
rename = "resettablePL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub resettable_pl: Option<Decimal>,
#[serde(rename = "financing", default, skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub financing: Option<Decimal>,
#[serde(
rename = "dividendAdjustment",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub dividend_adjustment: Option<Decimal>,
#[serde(
rename = "guaranteedExecutionFees",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub guaranteed_execution_fees: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CalculatedPositionState {
#[serde(
rename = "instrument",
default,
skip_serializing_if = "Option::is_none"
)]
pub instrument: Option<InstrumentName>,
#[serde(
rename = "netUnrealizedPL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub net_unrealized_pl: Option<Decimal>,
#[serde(
rename = "longUnrealizedPL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub long_unrealized_pl: Option<Decimal>,
#[serde(
rename = "shortUnrealizedPL",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub short_unrealized_pl: Option<Decimal>,
#[serde(
rename = "marginUsed",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub margin_used: Option<Decimal>,
}