pacifica_rust_sdk/models/ws/
subscriptions.rs1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4use serde_with::serde_as;
5use solana_sdk::pubkey::Pubkey;
6
7use crate::common::types::{AggLevel, Interval};
8
9#[derive(Serialize, Deserialize, Debug, Clone)]
10#[serde(rename_all = "snake_case")]
11pub enum SubscriptionMethod {
12 Prices,
13 Trades,
14 Book,
15 Candle,
16 Margin,
17 Leverage,
18 AccountInfo,
19 Positions,
20 Orders,
21 AccountOrderUpdates,
22 AccountTrades,
23}
24impl fmt::Display for SubscriptionMethod {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 let s = match self {
27 SubscriptionMethod::Prices => "prices",
28 SubscriptionMethod::Trades => "trades",
29 SubscriptionMethod::Book => "book",
30 SubscriptionMethod::Candle => "candle",
31 SubscriptionMethod::Margin => "account_margin",
32 SubscriptionMethod::Leverage => "account_leverage",
33 SubscriptionMethod::AccountInfo => "account_info",
34 SubscriptionMethod::Positions => "account_positions",
35 SubscriptionMethod::Orders => "account_orders",
36 SubscriptionMethod::AccountOrderUpdates => "account_order_updates",
37 SubscriptionMethod::AccountTrades => "account_trades",
38 };
39 write!(f, "{}", s)
40 }
41}
42
43#[derive(Serialize, Deserialize, Debug, Clone)]
44pub struct Prices {}
45
46#[derive(Serialize, Deserialize, Debug, Clone)]
47pub struct OrderBook {
48 pub symbol: String,
49 pub agg_level: Option<AggLevel>,
50}
51
52#[derive(Serialize, Deserialize, Debug, Clone)]
53pub struct Trades {
54 pub symbol: String,
55}
56
57#[derive(Serialize, Deserialize, Debug, Clone)]
58pub struct Candle {
59 pub symbol: String,
60 pub interval: Interval,
61}
62
63#[serde_as]
64#[derive(Serialize, Deserialize, Debug, Clone)]
65pub struct Balance {
66 #[serde_as(as = "serde_with::DisplayFromStr")]
67 pub account: Pubkey,
68}
69
70#[serde_as]
71#[derive(Serialize, Deserialize, Debug, Clone)]
72pub struct Margin {
73 #[serde_as(as = "serde_with::DisplayFromStr")]
74 pub account: Pubkey,
75}
76
77#[serde_as]
78#[derive(Serialize, Deserialize, Debug, Clone)]
79pub struct Leverage {
80 #[serde_as(as = "serde_with::DisplayFromStr")]
81 pub account: Pubkey,
82}
83
84#[serde_as]
85#[derive(Serialize, Deserialize, Debug, Clone)]
86pub struct AccountInfo {
87 #[serde_as(as = "serde_with::DisplayFromStr")]
88 pub account: Pubkey,
89}
90
91#[serde_as]
92#[derive(Serialize, Deserialize, Debug, Clone)]
93pub struct Positions {
94 #[serde_as(as = "serde_with::DisplayFromStr")]
95 pub account: Pubkey,
96}
97
98#[serde_as]
99#[derive(Serialize, Deserialize, Debug, Clone)]
100pub struct Orders {
101 #[serde_as(as = "serde_with::DisplayFromStr")]
102 pub account: Pubkey,
103}
104
105#[serde_as]
106#[derive(Serialize, Deserialize, Debug, Clone)]
107pub struct OrderUpdates {
108 #[serde_as(as = "serde_with::DisplayFromStr")]
109 pub account: Pubkey,
110}
111
112#[serde_as]
113#[derive(Serialize, Deserialize, Debug, Clone)]
114pub struct AccountTrades {
115 #[serde_as(as = "serde_with::DisplayFromStr")]
116 pub account: Pubkey,
117}