maestro-rust-sdk 1.2.5

Rust SDK for the Maestro Dapp Platform
Documentation
use chrono::{DateTime, Utc};
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use serde::de::{self, Deserializer};
use rust_decimal::prelude::FromPrimitive;

fn deserialize_decimal_from_f64<'de, D>(deserializer: D) -> Result<Decimal, D::Error>
where
    D: Deserializer<'de>,
{
    let float = f64::deserialize(deserializer)?;
    Decimal::from_f64(float).ok_or_else(|| de::Error::custom("Failed to convert float to Decimal"))
}

#[derive(Clone, Debug, Deserialize)]
pub struct DexPairOHLC {
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_a_change_pct: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_a_close: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_a_high: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_a_low: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_a_open: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_a_volume: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_b_change_pct: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_b_close: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_b_high: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_b_low: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_b_open: Decimal,
    #[serde(deserialize_with = "deserialize_decimal_from_f64")]
    pub coin_b_volume: Decimal,
    pub count: i64,
    pub timestamp: DateTime<Utc>,
}

#[derive(Clone, Copy, Debug, Serialize)]
pub enum Resolution {
    #[serde(rename = "1m")]
    OneMinute,
    #[serde(rename = "5m")]
    FiveMinutes,
    #[serde(rename = "15m")]
    FifteenMinutes,
    #[serde(rename = "30m")]
    ThirtyMinutes,
    #[serde(rename = "1h")]
    OneHour,
    #[serde(rename = "4h")]
    FourHours,
    #[serde(rename = "1d")]
    OneDay,
    #[serde(rename = "1w")]
    OneWeek,
    #[serde(rename = "1mo")]
    OneMonth,
}

#[derive(Clone, Copy, Debug, Serialize)]
pub enum Sort {
    #[serde(rename = "asc")]
    Asc,
    #[serde(rename = "desc")]
    Desc,
}

#[derive(Clone, Debug, Default, Serialize)]
pub struct DexPairOHLCParameters {
    pub resolution: Option<Resolution>,
    pub from: Option<String>,
    pub to: Option<String>,
    pub carry: Option<bool>,
    pub limit: Option<i64>,
    pub sort: Option<Sort>,
}