Skip to main content

pyth_lazer_protocol/
exchange_enums.rs

1use {
2    serde::{Deserialize, Serialize},
3    std::fmt::Display,
4};
5
6/// Asset class for an exchange entity. Mirrors the proto `AssetClass` enum.
7#[derive(
8    Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize,
9)]
10#[serde(rename_all = "snake_case")]
11pub enum ExchangeAssetClass {
12    #[default]
13    Unspecified,
14    Equity,
15    Future,
16}
17
18impl Display for ExchangeAssetClass {
19    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20        match self {
21            Self::Unspecified => write!(f, "unspecified"),
22            Self::Equity => write!(f, "equity"),
23            Self::Future => write!(f, "future"),
24        }
25    }
26}
27
28/// Asset subclass for an exchange entity. Mirrors the proto `AssetSubclass` enum.
29#[derive(
30    Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize,
31)]
32#[serde(rename_all = "snake_case")]
33pub enum ExchangeAssetSubclass {
34    #[default]
35    Unspecified,
36    CommonStock,
37    Etf,
38    Energy,
39    Metals,
40    Equity,
41    FixedIncome,
42    Fx,
43    Agricultural,
44}
45
46impl Display for ExchangeAssetSubclass {
47    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
48        match self {
49            Self::Unspecified => write!(f, "unspecified"),
50            Self::CommonStock => write!(f, "common_stock"),
51            Self::Etf => write!(f, "etf"),
52            Self::Energy => write!(f, "energy"),
53            Self::Metals => write!(f, "metals"),
54            Self::Equity => write!(f, "equity"),
55            Self::FixedIncome => write!(f, "fixed_income"),
56            Self::Fx => write!(f, "fx"),
57            Self::Agricultural => write!(f, "agricultural"),
58        }
59    }
60}
61
62/// Asset sector for an exchange entity. Mirrors the proto `AssetSector` enum.
63#[derive(
64    Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize,
65)]
66#[serde(rename_all = "snake_case")]
67pub enum ExchangeAssetSector {
68    #[default]
69    Unspecified,
70    Technology,
71    Financials,
72    BroadMarket,
73    Oil,
74    Metals,
75    Index,
76    Rates,
77    Fx,
78    Agricultural,
79}
80
81impl Display for ExchangeAssetSector {
82    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
83        match self {
84            Self::Unspecified => write!(f, "unspecified"),
85            Self::Technology => write!(f, "technology"),
86            Self::Financials => write!(f, "financials"),
87            Self::BroadMarket => write!(f, "broad_market"),
88            Self::Oil => write!(f, "oil"),
89            Self::Metals => write!(f, "metals"),
90            Self::Index => write!(f, "index"),
91            Self::Rates => write!(f, "rates"),
92            Self::Fx => write!(f, "fx"),
93            Self::Agricultural => write!(f, "agricultural"),
94        }
95    }
96}