architect_api/cpty/
cboe_digital.rs

1use crate::{folio::FolioMessage, symbology::market::NormalizedMarketInfo};
2use derive::FromStrJson;
3#[cfg(feature = "netidx")]
4use derive::FromValue;
5#[cfg(feature = "netidx")]
6use netidx_derive::Pack;
7use rust_decimal::Decimal;
8use schemars::JsonSchema;
9use serde_derive::{Deserialize, Serialize};
10use zeroize::Zeroize;
11
12#[derive(Debug, Clone, FromStrJson, Serialize, Deserialize, Zeroize, JsonSchema)]
13#[cfg_attr(feature = "netidx", derive(Pack))]
14#[cfg_attr(feature = "netidx", derive(FromValue))]
15pub struct CboeDigitalCreds {
16    pub api_key: String,
17    pub api_secret: String,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
21#[cfg_attr(feature = "netidx", derive(Pack))]
22pub struct CboeDigitalMarketInfo {
23    pub tick_size: Decimal,
24    pub step_size: Decimal,
25}
26
27impl NormalizedMarketInfo for CboeDigitalMarketInfo {
28    fn tick_size(&self) -> Decimal {
29        self.tick_size
30    }
31
32    fn step_size(&self) -> Decimal {
33        self.step_size
34    }
35
36    fn is_delisted(&self) -> bool {
37        false
38    }
39}
40
41impl std::fmt::Display for CboeDigitalMarketInfo {
42    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43        write!(f, "{}", serde_json::to_string_pretty(self).unwrap())?;
44        Ok(())
45    }
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
49#[cfg_attr(feature = "netidx", derive(Pack))]
50#[cfg_attr(feature = "netidx", derive(FromValue))]
51pub enum CboeDigitalMessage {
52    Folio(FolioMessage),
53}
54
55impl TryInto<FolioMessage> for &CboeDigitalMessage {
56    type Error = ();
57
58    fn try_into(self) -> Result<FolioMessage, Self::Error> {
59        match self {
60            CboeDigitalMessage::Folio(f) => Ok(f.clone()),
61        }
62    }
63}
64
65impl TryInto<CboeDigitalMessage> for &FolioMessage {
66    type Error = ();
67
68    fn try_into(self) -> Result<CboeDigitalMessage, Self::Error> {
69        Ok(CboeDigitalMessage::Folio(self.clone()))
70    }
71}