use std::str::FromStr;
use nautilus_model::{enum_strum_serde, enums::FromU8};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use strum::{AsRefStr, Display, EnumIter, EnumString, FromRepr};
#[repr(C)]
#[derive(
Copy,
Clone,
Debug,
Display,
Hash,
PartialEq,
Eq,
PartialOrd,
Ord,
AsRefStr,
FromRepr,
EnumIter,
EnumString,
)]
#[strum(ascii_case_insensitive)]
#[strum(serialize_all = "SCREAMING_SNAKE_CASE")]
#[cfg_attr(
feature = "python",
pyo3::pyclass(
eq,
eq_int,
rename_all = "SCREAMING_SNAKE_CASE",
module = "nautilus_trader.core.nautilus_pyo3.databento",
from_py_object
)
)]
#[cfg_attr(
feature = "python",
pyo3_stub_gen::derive::gen_stub_pyclass_enum(module = "nautilus_trader.databento")
)]
pub enum DatabentoStatisticType {
OpeningPrice = 1,
IndicativeOpeningPrice = 2,
SettlementPrice = 3,
TradingSessionLowPrice = 4,
TradingSessionHighPrice = 5,
ClearedVolume = 6,
LowestOffer = 7,
HighestBid = 8,
OpenInterest = 9,
FixingPrice = 10,
ClosePrice = 11,
NetChange = 12,
Vwap = 13,
Volatility = 14,
Delta = 15,
UncrossingPrice = 16,
UpperPriceLimit = 17,
LowerPriceLimit = 18,
BlockVolume = 19,
IndicativeClosePrice = 20,
}
impl FromU8 for DatabentoStatisticType {
fn from_u8(value: u8) -> Option<Self> {
match value {
1 => Some(Self::OpeningPrice),
2 => Some(Self::IndicativeOpeningPrice),
3 => Some(Self::SettlementPrice),
4 => Some(Self::TradingSessionLowPrice),
5 => Some(Self::TradingSessionHighPrice),
6 => Some(Self::ClearedVolume),
7 => Some(Self::LowestOffer),
8 => Some(Self::HighestBid),
9 => Some(Self::OpenInterest),
10 => Some(Self::FixingPrice),
11 => Some(Self::ClosePrice),
12 => Some(Self::NetChange),
13 => Some(Self::Vwap),
14 => Some(Self::Volatility),
15 => Some(Self::Delta),
16 => Some(Self::UncrossingPrice),
17 => Some(Self::UpperPriceLimit),
18 => Some(Self::LowerPriceLimit),
19 => Some(Self::BlockVolume),
20 => Some(Self::IndicativeClosePrice),
_ => None,
}
}
}
#[repr(C)]
#[derive(
Copy,
Clone,
Debug,
Display,
Hash,
PartialEq,
Eq,
PartialOrd,
Ord,
AsRefStr,
FromRepr,
EnumIter,
EnumString,
)]
#[strum(ascii_case_insensitive)]
#[strum(serialize_all = "SCREAMING_SNAKE_CASE")]
#[cfg_attr(
feature = "python",
pyo3::pyclass(
eq,
eq_int,
rename_all = "SCREAMING_SNAKE_CASE",
module = "nautilus_trader.core.nautilus_pyo3.databento",
from_py_object
)
)]
#[cfg_attr(
feature = "python",
pyo3_stub_gen::derive::gen_stub_pyclass_enum(module = "nautilus_trader.databento")
)]
pub enum DatabentoStatisticUpdateAction {
Added = 1,
Deleted = 2,
}
impl FromU8 for DatabentoStatisticUpdateAction {
fn from_u8(value: u8) -> Option<Self> {
match value {
1 => Some(Self::Added),
2 => Some(Self::Deleted),
_ => None,
}
}
}
enum_strum_serde!(DatabentoStatisticType);
enum_strum_serde!(DatabentoStatisticUpdateAction);