use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateQuote {
#[serde(rename = "scope")]
pub scope: Vec<models::CreateQuoteScopeInner>,
#[serde(rename = "baseAssetId")]
pub base_asset_id: String,
#[serde(rename = "baseAssetRail", skip_serializing_if = "Option::is_none")]
pub base_asset_rail: Option<models::TransferRail>,
#[serde(rename = "quoteAssetId")]
pub quote_asset_id: String,
#[serde(rename = "quoteAssetRail", skip_serializing_if = "Option::is_none")]
pub quote_asset_rail: Option<models::TransferRail>,
#[serde(rename = "baseAmount")]
pub base_amount: String,
#[serde(rename = "slippageBps", skip_serializing_if = "Option::is_none")]
pub slippage_bps: Option<f64>,
#[serde(rename = "settlement", skip_serializing_if = "Option::is_none")]
pub settlement: Option<models::DvpSettlement>,
#[serde(rename = "side")]
pub side: Side,
}
impl CreateQuote {
pub fn new(
scope: Vec<models::CreateQuoteScopeInner>,
base_asset_id: String,
quote_asset_id: String,
base_amount: String,
side: Side,
) -> CreateQuote {
CreateQuote {
scope,
base_asset_id,
base_asset_rail: None,
quote_asset_id,
quote_asset_rail: None,
base_amount,
slippage_bps: None,
settlement: None,
side,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Side {
#[serde(rename = "BUY")]
Buy,
#[serde(rename = "SELL")]
Sell,
}
impl Default for Side {
fn default() -> Side {
Self::Buy
}
}