1use chrono::{DateTime, Utc};
2use rust_decimal::Decimal;
3use serde::Deserialize;
4use serde_with::{TimestampMilliSeconds, formats::Flexible};
5use xapi_shared::data::crypto_asset::CryptoAsset;
6
7#[serde_with::serde_as]
8#[derive(Debug, Deserialize, Clone)]
9#[serde(rename_all = "camelCase")]
10pub struct OkxBalance {
11 pub details: Vec<OkxBalanceDetail>,
12 #[serde(rename = "uTime")]
13 #[serde_as(as = "TimestampMilliSeconds<String, Flexible>")]
14 pub update_time: DateTime<Utc>,
15}
16
17#[serde_with::serde_as]
18#[derive(Debug, Deserialize, Clone)]
19#[serde(rename_all = "camelCase")]
20pub struct OkxBalanceDetail {
21 #[serde(rename = "ccy")]
22 pub currency: CryptoAsset,
23 #[serde(rename = "eq")]
24 pub equity: Decimal,
25 #[serde(rename = "availEq")]
26 pub available_equity: Decimal,
27 #[serde(rename = "availBal")]
28 pub available_balance: Decimal,
29 #[serde_as(as = "TimestampMilliSeconds<String, Flexible>")]
30 #[serde(rename = "uTime")]
31 pub update_time: DateTime<Utc>,
32}