use crate::model::NumberString;
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiInvestData {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub earnings: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiOffer {
#[serde(default)]
pub product_id: String,
#[serde(default)]
pub protocol_type: String,
#[serde(default)]
pub name: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub term: String,
#[serde(default)]
pub apy: NumberString,
#[serde(default)]
pub state: String,
#[serde(default)]
pub invest_data: Vec<StakingDefiInvestData>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiOrder {
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub product_id: String,
#[serde(default)]
pub protocol_type: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub state: String,
#[serde(default)]
pub term: String,
#[serde(default)]
pub apy: NumberString,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingProductInfo {
#[serde(default)]
pub fast_redemption_daily_limit: NumberString,
#[serde(default)]
pub rate: NumberString,
#[serde(default)]
pub redempt_days: NumberString,
#[serde(default)]
pub min_amt: NumberString,
#[serde(default)]
pub fast_redemption_avail: Option<NumberString>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingOrder {
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub state: String,
#[serde(default, rename = "type")]
pub order_type: String,
#[serde(default)]
pub c_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct CancelRedeem {
#[serde(default)]
pub ord_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingBalance {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub earnings: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingHistory {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default, rename = "type")]
pub event_type: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingApyHistory {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub apy: NumberString,
#[serde(default)]
pub ts: NumberString,
}