#![allow(missing_docs)]
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use crate::utils::counter::deserialize_counter_id_as_symbol;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertList {
pub lists: Vec<AlertSymbolGroup>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertSymbolGroup {
#[serde(
rename = "counter_id",
deserialize_with = "deserialize_counter_id_as_symbol"
)]
pub symbol: String,
pub code: String,
pub market: String,
pub name: String,
#[serde(with = "crate::serde_utils::decimal_opt_str_is_none")]
pub price: Option<Decimal>,
#[serde(with = "crate::serde_utils::decimal_opt_str_is_none")]
pub chg: Option<Decimal>,
#[serde(with = "crate::serde_utils::decimal_opt_str_is_none")]
pub p_chg: Option<Decimal>,
#[serde(default)]
pub product: String,
pub indicators: Vec<AlertItem>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertItem {
pub id: String,
pub indicator_id: String,
pub enabled: bool,
pub frequency: i32,
pub scope: i32,
pub text: String,
#[serde(default)]
pub state: Vec<i32>,
pub value_map: serde_json::Value,
}
#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
pub enum AlertCondition {
#[serde(rename = "1")]
PriceRise = 1,
#[serde(rename = "2")]
PriceFall = 2,
#[serde(rename = "3")]
PercentRise = 3,
#[serde(rename = "4")]
PercentFall = 4,
}
#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
pub enum AlertFrequency {
#[serde(rename = "1")]
Daily = 1,
#[serde(rename = "2")]
EveryTime = 2,
#[serde(rename = "3")]
Once = 3,
}