use serde::Deserialize;
use crate::model::NumberString;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SpotBorrowRepayResult {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub amt: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetAutoRepayResult {
#[serde(default)]
pub auto_repay: bool,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SpotBorrowRepayHistory {
#[serde(default)]
pub ccy: String,
#[serde(default, rename = "type")]
pub event_type: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub acc_borrowed: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetAutoEarnResult {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub auto_earn: bool,
#[serde(default)]
pub min_rate: NumberString,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn decodes_spot_borrow_repay_result() {
let row: SpotBorrowRepayResult =
serde_json::from_str(r#"{"ccy":"USDT","side":"borrow","amt":"5"}"#).unwrap();
assert_eq!(row.ccy, "USDT");
assert_eq!(row.side, "borrow");
}
}