Skip to main content

acta_maker_sdk/types/
domain.rs

1use serde::{Deserialize, Serialize};
2use strum::IntoStaticStr;
3
4use super::ids::{Balance, MarketId, Quantity};
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, IntoStaticStr)]
7#[serde(rename_all = "snake_case")]
8#[strum(serialize_all = "snake_case")]
9#[non_exhaustive]
10pub enum RfqCloseReason {
11    Expired,
12    TakerCancelled,
13    Filled,
14    MarketExpired,
15    LadderTimeout,
16    #[serde(other)]
17    Unknown,
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, IntoStaticStr)]
21#[serde(rename_all = "snake_case")]
22#[strum(serialize_all = "snake_case")]
23#[non_exhaustive]
24pub enum QuoteFinalStatus {
25    Expired,
26    Outbid,
27    Cancelled,
28    Filled,
29    #[serde(other)]
30    Unknown,
31}
32
33#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, IntoStaticStr)]
34#[serde(rename_all = "snake_case")]
35#[strum(serialize_all = "snake_case")]
36#[non_exhaustive]
37pub enum QuoteCancelReason {
38    Requested,
39    RiskCheck,
40    RfqAccepted,
41    /// The session enabled `cancel_on_disconnect` and disconnected.
42    MakerDisconnected,
43    #[serde(other)]
44    Unknown,
45}
46
47#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, IntoStaticStr)]
48#[serde(rename_all = "snake_case")]
49#[strum(serialize_all = "snake_case")]
50#[non_exhaustive]
51pub enum RfqAvailableAgainReason {
52    SignatureTimeout,
53    TxFailed,
54    TxBuildFailed,
55    #[serde(other)]
56    Unknown,
57}
58
59impl std::fmt::Display for RfqAvailableAgainReason {
60    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
61        formatter.write_str(self.into())
62    }
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66pub struct TokenCapInfo {
67    pub underlying_mint: String,
68    pub symbol: String,
69    pub current_oi: Quantity,
70    pub max_oi: Quantity,
71    pub utilization: f64,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
75pub struct MarketCapInfo {
76    pub market_id: MarketId,
77    pub current_oi: Quantity,
78    pub max_oi: Quantity,
79    pub utilization: f64,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct MakerPositionCapInfo {
84    pub current: u32,
85    pub limit: u32,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct MakerNotionalCapInfo {
90    pub underlying_mint: String,
91    pub symbol: String,
92    pub current: Quantity,
93    pub limit: Quantity,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct MakerBalanceCapInfo {
98    pub mint: String,
99    pub symbol: String,
100    pub decimals: u8,
101    pub deposited: Balance,
102    pub committed: Balance,
103    pub available: Balance,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
107pub struct QuoteCapInfo {
108    pub quote_mint: String,
109    pub symbol: String,
110    pub current_notional: Balance,
111    pub max_notional: Balance,
112    pub utilization: f64,
113}