use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TokenResponse {
#[serde(rename = "assetId")]
pub asset_id: String,
#[serde(rename = "decimals")]
pub decimals: f64,
#[serde(rename = "blockchain")]
pub blockchain: Blockchain,
#[serde(rename = "symbol")]
pub symbol: String,
#[serde(rename = "price")]
pub price: f64,
#[serde(rename = "priceUpdatedAt")]
pub price_updated_at: String,
#[serde(rename = "contractAddress", skip_serializing_if = "Option::is_none")]
pub contract_address: Option<String>,
}
impl TokenResponse {
pub fn new(asset_id: String, decimals: f64, blockchain: Blockchain, symbol: String, price: f64, price_updated_at: String) -> TokenResponse {
TokenResponse {
asset_id,
decimals,
blockchain,
symbol,
price,
price_updated_at,
contract_address: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Blockchain {
#[serde(rename = "near")]
Near,
#[serde(rename = "eth")]
Eth,
#[serde(rename = "base")]
Base,
#[serde(rename = "arb")]
Arb,
#[serde(rename = "btc")]
Btc,
#[serde(rename = "sol")]
Sol,
#[serde(rename = "ton")]
Ton,
#[serde(rename = "doge")]
Doge,
#[serde(rename = "xrp")]
Xrp,
#[serde(rename = "zec")]
Zec,
#[serde(rename = "gnosis")]
Gnosis,
#[serde(rename = "bera")]
Bera,
#[serde(rename = "bsc")]
Bsc,
#[serde(rename = "pol")]
Pol,
#[serde(rename = "tron")]
Tron,
}
impl Default for Blockchain {
fn default() -> Blockchain {
Self::Near
}
}