#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct InstrumentIssue {
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<Name>,
#[serde(rename = "severity", skip_serializing_if = "Option::is_none")]
pub severity: Option<Severity>,
}
impl InstrumentIssue {
#[must_use]
pub const fn new() -> Self {
Self {
name: None,
severity: None,
}
}
}
impl Default for InstrumentIssue {
fn default() -> Self {
Self::new()
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Name {
#[serde(rename = "DELISTED")]
Delisted,
#[serde(rename = "SUSPENDED")]
Suspended,
#[serde(rename = "NO_LONGER_TRADABLE")]
NoLongerTradable,
#[serde(rename = "MAX_POSITION_SIZE_REACHED")]
MaxPositionSizeReached,
#[serde(rename = "APPROACHING_MAX_POSITION_SIZE")]
ApproachingMaxPositionSize,
#[serde(rename = "COMPLEX_INSTRUMENT_APP_TEST_REQUIRED")]
ComplexInstrumentAppTestRequired,
}
impl Default for Name {
fn default() -> Self {
Self::Delisted
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Severity {
#[serde(rename = "IRREVERSIBLE")]
Irreversible,
#[serde(rename = "REVERSIBLE")]
Reversible,
#[serde(rename = "INFORMATIVE")]
Informative,
}
impl Default for Severity {
fn default() -> Self {
Self::Irreversible
}
}