use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SubmitOrderLimitDtoData {
#[serde(rename = "subaccount")]
pub subaccount: String,
#[serde(rename = "sender")]
pub sender: String,
#[serde(rename = "nonce")]
pub nonce: String,
#[serde(rename = "type")]
pub r#type: models::OrderType,
#[serde(rename = "quantity")]
pub quantity: rust_decimal::Decimal,
#[serde(rename = "side")]
pub side: models::OrderSide,
#[serde(rename = "onchainId")]
pub onchain_id: f64,
#[serde(rename = "engineType")]
pub engine_type: models::EngineTypeEnum,
#[serde(rename = "clientOrderId", skip_serializing_if = "Option::is_none")]
pub client_order_id: Option<String>,
#[serde(rename = "reduceOnly", skip_serializing_if = "Option::is_none")]
pub reduce_only: Option<bool>,
#[serde(rename = "close", skip_serializing_if = "Option::is_none")]
pub close: Option<bool>,
#[serde(rename = "stopPrice", skip_serializing_if = "Option::is_none")]
pub stop_price: Option<rust_decimal::Decimal>,
#[serde(rename = "stopType", skip_serializing_if = "Option::is_none")]
pub stop_type: Option<models::StopTypeEnum>,
#[serde(rename = "signedAt")]
pub signed_at: f64,
#[serde(rename = "expiresAt", skip_serializing_if = "Option::is_none")]
pub expires_at: Option<f64>,
#[serde(rename = "groupId", skip_serializing_if = "Option::is_none")]
pub group_id: Option<uuid::Uuid>,
#[serde(
rename = "groupContingencyType",
skip_serializing_if = "Option::is_none"
)]
pub group_contingency_type: Option<models::GroupContingencyTypeEnum>,
#[serde(rename = "price")]
pub price: rust_decimal::Decimal,
#[serde(rename = "timeInForce")]
pub time_in_force: models::TimeInForce,
#[serde(rename = "postOnly")]
pub post_only: bool,
}
impl SubmitOrderLimitDtoData {
pub fn new(
subaccount: String,
sender: String,
nonce: String,
r#type: models::OrderType,
quantity: rust_decimal::Decimal,
side: models::OrderSide,
onchain_id: f64,
engine_type: models::EngineTypeEnum,
signed_at: f64,
price: rust_decimal::Decimal,
time_in_force: models::TimeInForce,
post_only: bool,
) -> SubmitOrderLimitDtoData {
SubmitOrderLimitDtoData {
subaccount,
sender,
nonce,
r#type,
quantity,
side,
onchain_id,
engine_type,
client_order_id: None,
reduce_only: None,
close: None,
stop_price: None,
stop_type: None,
signed_at,
expires_at: None,
group_id: None,
group_contingency_type: None,
price,
time_in_force,
post_only,
}
}
}