use crate::models::prelude::*;
use derive_getters::Getters;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Getters)]
pub struct AllTradesResponse {
#[serde(rename = "_links")]
pub links: ResponseLinks,
#[serde(rename = "_embedded")]
pub embedded: Embedded<TradeResponse>,
}
impl Response for AllTradesResponse {
fn from_json(json: String) -> Result<Self, String> {
let response = serde_json::from_str(&json).map_err(|e| e.to_string())?;
Ok(response)
}
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct TradeResponseLinks {
#[serde(rename = "self")]
self_link: Link,
base: Link,
counter: Link,
operation: Link,
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct Price {
#[serde(rename = "n")]
numenator: String,
#[serde(rename = "d")]
denominator: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct TradeResponse {
#[serde(rename = "_links")]
links: TradeResponseLinks,
id: String,
paging_token: String,
ledger_close_time: String,
trade_type: String,
liquidity_pool_fee_bp: Option<u32>,
base_liquidity_pool_id: Option<String>,
base_offer_id: Option<String>,
base_account: Option<String>,
base_amount: String,
base_asset_type: Option<String>,
base_asset_code: Option<String>,
base_asset_issuer: Option<String>,
counter_liquidity_pool_id: Option<String>,
counter_offer_id: Option<String>,
counter_account: Option<String>,
counter_amount: String,
counter_asset_type: Option<String>,
counter_asset_code: Option<String>,
counter_asset_issuer: Option<String>,
base_is_seller: bool,
price: Option<Price>,
}
impl Response for TradeResponse {
fn from_json(json: String) -> Result<Self, String> {
serde_json::from_str(&json).map_err(|e| e.to_string())
}
}