use crate::CountryCode;
use serde::{Deserialize, Serialize};
#[derive(
Copy, Clone, Debug, Deserialize, Display, EnumIter, EnumString, Eq, PartialEq, Serialize,
)]
#[strum(serialize_all = "PascalCase")]
pub enum MIC {
XNYS,
ARCX,
XASE,
XCIS,
XCHI,
XNAS,
XNGS,
XBOS,
XPHL,
XCBO,
BATS,
BATY,
EDGX,
EDGA,
MPRL,
MIHI,
MEMX,
IEXG,
LTSE,
XADF,
FINR,
}
impl MIC {
pub fn operating_mic(&self) -> MIC {
match self {
MIC::XNYS => MIC::XNYS,
MIC::ARCX => MIC::XNYS,
MIC::XASE => MIC::XNYS,
MIC::XCIS => MIC::XNYS,
MIC::XCHI => MIC::XNYS,
MIC::XNAS => MIC::XNAS,
MIC::XNGS => MIC::XNAS,
MIC::XBOS => MIC::XNAS,
MIC::XPHL => MIC::XNAS,
MIC::XCBO => MIC::XCBO,
MIC::BATS => MIC::XCBO,
MIC::BATY => MIC::XCBO,
MIC::EDGX => MIC::XCBO,
MIC::EDGA => MIC::XCBO,
MIC::MPRL => MIC::MIHI,
MIC::MIHI => MIC::MIHI,
MIC::MEMX => MIC::MEMX,
MIC::IEXG => MIC::IEXG,
MIC::LTSE => MIC::LTSE,
MIC::XADF => MIC::FINR,
MIC::FINR => MIC::FINR,
}
}
pub fn name(&self) -> &'static str {
match self {
MIC::XNYS => "New York Stock Exchange",
MIC::ARCX => "NYSE ARCA",
MIC::XASE => "NYSE AMEX",
MIC::XCIS => "NYSE National",
MIC::XCHI => "NYSE Chicago",
MIC::XNAS => "Nasdaq",
MIC::XNGS => "Nasdaq Global Select",
MIC::XBOS => "Nasdaq BX",
MIC::XPHL => "Nasdaq PHLX",
MIC::XCBO => "CBOE Global Markets",
MIC::BATS => "CBOE BZX",
MIC::BATY => "CBOE BYX",
MIC::EDGX => "CBOE EDGX",
MIC::EDGA => "CBOE EDGA",
MIC::MPRL => "MIAX Pearl",
MIC::MIHI => "MIAX",
MIC::MEMX => "MEMX",
MIC::IEXG => "Investors Exchange",
MIC::LTSE => "Long-term Stock Exchange",
MIC::XADF => "FINRA Alternative Display Facility",
MIC::FINR => "FINRA",
}
}
pub fn country(&self) -> CountryCode {
match self {
MIC::XNYS => CountryCode::US,
MIC::ARCX => CountryCode::US,
MIC::XASE => CountryCode::US,
MIC::XCIS => CountryCode::US,
MIC::XCHI => CountryCode::US,
MIC::XNAS => CountryCode::US,
MIC::XNGS => CountryCode::US,
MIC::XBOS => CountryCode::US,
MIC::XPHL => CountryCode::US,
MIC::XCBO => CountryCode::US,
MIC::BATS => CountryCode::US,
MIC::BATY => CountryCode::US,
MIC::EDGX => CountryCode::US,
MIC::EDGA => CountryCode::US,
MIC::MPRL => CountryCode::US,
MIC::MIHI => CountryCode::US,
MIC::MEMX => CountryCode::US,
MIC::IEXG => CountryCode::US,
MIC::LTSE => CountryCode::US,
MIC::XADF => CountryCode::US,
MIC::FINR => CountryCode::US,
}
}
}