longbridge/alert/
types.rs1use rust_decimal::Decimal;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct AlertList {
7 pub lists: Vec<AlertSymbolGroup>,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct AlertSymbolGroup {
14 pub symbol: String,
16 pub code: String,
18 pub market: String,
20 pub name: String,
22 #[serde(with = "crate::serde_utils::decimal_opt_str_is_none")]
24 pub price: Option<Decimal>,
25 #[serde(with = "crate::serde_utils::decimal_opt_str_is_none")]
27 pub chg: Option<Decimal>,
28 #[serde(with = "crate::serde_utils::decimal_opt_str_is_none")]
30 pub p_chg: Option<Decimal>,
31 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
33 pub product: String,
34 pub indicators: Vec<AlertItem>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct AlertItem {
41 pub id: String,
43 pub indicator_id: String,
45 pub enabled: bool,
47 pub frequency: i32,
49 pub scope: i32,
51 pub text: String,
53 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
55 pub state: Vec<i32>,
56 pub value_map: AlertValueMap,
58}
59
60#[derive(Debug, Clone, Default, Serialize, Deserialize)]
67pub struct AlertValueMap {
68 #[serde(
70 default,
71 with = "crate::serde_utils::decimal_opt_str_is_none",
72 skip_serializing_if = "Option::is_none"
73 )]
74 pub price: Option<Decimal>,
75 #[serde(
77 default,
78 with = "crate::serde_utils::f64_opt_str",
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub chg: Option<f64>,
82}
83
84#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
86pub enum AlertCondition {
87 #[serde(rename = "1")]
89 PriceRise = 1,
90 #[serde(rename = "2")]
92 PriceFall = 2,
93 #[serde(rename = "3")]
95 PercentRise = 3,
96 #[serde(rename = "4")]
98 PercentFall = 4,
99}
100
101#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
103pub enum AlertFrequency {
104 #[serde(rename = "1")]
106 Daily = 1,
107 #[serde(rename = "2")]
109 EveryTime = 2,
110 #[serde(rename = "3")]
112 Once = 3,
113}