use crate::models::prelude::*;
use derive_getters::Getters;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Clone, Getters)]
pub struct AccountsResponse {
#[serde(rename = "_links")]
links: ResponseLinks,
#[serde(rename = "_embedded")]
embedded: Embedded<Account>,
}
#[derive(Debug, Deserialize, Clone, Getters)]
pub struct Thresholds {
low_threshold: u32,
med_threshold: u32,
high_threshold: u32,
}
#[derive(Debug, Deserialize, Clone, Getters)]
pub struct Signer {
weight: u32,
key: String,
#[serde(rename = "type")]
singer_type: String,
}
#[derive(Debug, Deserialize, Clone, Getters)]
pub struct Balances {
balance: String,
buying_liabilities: String,
selling_liabilities: String,
asset_type: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct AccountResponseLinks {
#[serde(rename = "self")]
self_link: Link,
transactions: TemplateLink,
operations: TemplateLink,
payments: TemplateLink,
effects: TemplateLink,
offers: TemplateLink,
trades: TemplateLink,
data: TemplateLink,
}
#[derive(Debug, Deserialize, Clone, Getters)]
pub struct Account {
#[serde(rename = "_links")]
links: AccountResponseLinks,
id: String,
account_id: String,
sequence: String,
subentry_count: u32,
last_modified_ledger: u64,
last_modified_time: String,
thresholds: Thresholds,
flags: Flags,
balances: Vec<Balances>,
signers: Vec<Signer>,
data: Option<Data>,
num_sponsoring: u32,
num_sponsored: u32,
paging_token: String,
}
#[derive(Debug, Deserialize, Clone, Getters)]
pub struct Data {
}
impl Response for Account {
fn from_json(json: String) -> Result<Self, String> {
serde_json::from_str(&json).map_err(|e| e.to_string())
}
}
impl Response for AccountsResponse {
fn from_json(json: String) -> Result<Self, String> {
let response = serde_json::from_str(&json).map_err(|e| e.to_string())?;
Ok(response)
}
}