architect_api/cpty/
cboe_digital.rs1use 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}