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 bal: NumberString,
#[serde(default)]
pub min_amt: NumberString,
#[serde(default)]
pub max_amt: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiEarningData {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub earning_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiOffer {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub product_id: String,
#[serde(default)]
pub protocol: String,
#[serde(default)]
pub protocol_type: String,
#[serde(default)]
pub term: String,
#[serde(default)]
pub apy: NumberString,
#[serde(default)]
pub early_redeem: bool,
#[serde(default)]
pub invest_data: Vec<StakingDefiInvestData>,
#[serde(default)]
pub earning_data: Vec<StakingDefiEarningData>,
#[serde(default)]
pub state: String,
#[serde(default)]
pub redeem_period: Vec<String>,
#[serde(default)]
pub fast_redemption_daily_limit: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiOrderInvestData {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiOrderEarningData {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub earning_type: String,
#[serde(default)]
pub earnings: NumberString,
#[serde(default)]
pub realized_earnings: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiFastRedemptionData {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub redeeming_amt: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingDefiOrder {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub product_id: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub protocol: String,
#[serde(default)]
pub protocol_type: String,
#[serde(default)]
pub term: String,
#[serde(default)]
pub apy: NumberString,
#[serde(default)]
pub invest_data: Vec<StakingDefiOrderInvestData>,
#[serde(default)]
pub earning_data: Vec<StakingDefiOrderEarningData>,
#[serde(default)]
pub fast_redemption_data: Vec<StakingDefiFastRedemptionData>,
#[serde(default)]
pub purchased_time: NumberString,
#[serde(default)]
pub est_settlement_time: NumberString,
#[serde(default)]
pub cancel_redemption_deadline: NumberString,
#[serde(default)]
pub redeemed_time: NumberString,
#[serde(default)]
pub tag: String,
}
#[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 latest_interest_accrual: NumberString,
#[serde(default)]
pub total_interest_accrual: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingHistory {
#[serde(default, rename = "type")]
pub event_type: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub redeeming_amt: NumberString,
#[serde(default)]
pub status: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub request_time: NumberString,
#[serde(default)]
pub completed_time: NumberString,
#[serde(default)]
pub est_completed_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct StakingApyHistory {
#[serde(default)]
pub rate: NumberString,
#[serde(default)]
pub ts: NumberString,
}