midgard_rs/types/
savers_pool.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use serde_aux::prelude::*;
4use serde_with::formats::Flexible;
5use serde_with::TimestampSeconds;
6
7/*
8
9*** Savers Pool Scheme ***
10
11{
12		"assetAdded": "99999",
13		"assetAddress": "bc1qcxssye4j6730h7ehgega3gyykkuwgdgmmpu62n",
14		"assetDeposit": "99999",
15		"assetRedeem": "103921",
16		"assetWithdrawn": "0",
17		"dateFirstAdded": "1666948585",
18		"dateLastAdded": "1666948585",
19		"pool": "BTC.BTC",
20		"saverUnits": "99999"
21}
22
23*/
24
25#[serde_with::serde_as]
26#[derive(Debug, Serialize, Deserialize, Clone)]
27pub struct SaversPool {
28	#[serde(rename = "assetAdded", deserialize_with = "deserialize_number_from_string")]
29	asset_added: u64,
30
31	#[serde(rename = "assetAddress")]
32	asset_address: String,
33
34	#[serde(rename = "assetDeposit", deserialize_with = "deserialize_number_from_string")]
35	asset_deposit: u64,
36
37	#[serde(rename = "assetRedeem", deserialize_with = "deserialize_number_from_string")]
38	asset_redeem: u64,
39
40	#[serde(rename = "assetWithdrawn", deserialize_with = "deserialize_number_from_string")]
41	asset_withdrawn: u64,
42
43	#[serde_as(as = "TimestampSeconds<String, Flexible>")]
44	#[serde(rename = "dateFirstAdded")]
45	date_first_added: DateTime<Utc>,
46
47	#[serde_as(as = "TimestampSeconds<String, Flexible>")]
48	#[serde(rename = "dateLastAdded")]
49	date_last_added: DateTime<Utc>,
50
51	pool: String,
52
53	#[serde(rename = "saverUnits", deserialize_with = "deserialize_number_from_string")]
54	saver_units: u64,
55}
56
57impl SaversPool {
58	#[must_use]
59	pub const fn get_asset_added(&self) -> &u64 {
60		&self.asset_added
61	}
62
63	#[must_use]
64	pub fn get_asset_address(&self) -> &str {
65		&self.asset_address
66	}
67
68	#[must_use]
69	pub const fn get_asset_deposit(&self) -> &u64 {
70		&self.asset_deposit
71	}
72
73	#[must_use]
74	pub const fn get_asset_redeem(&self) -> &u64 {
75		&self.asset_redeem
76	}
77
78	#[must_use]
79	pub const fn get_asset_withdrawn(&self) -> &u64 {
80		&self.asset_withdrawn
81	}
82
83	#[must_use]
84	pub const fn get_date_first_added(&self) -> &DateTime<Utc> {
85		&self.date_first_added
86	}
87
88	#[must_use]
89	pub const fn get_date_last_added(&self) -> &DateTime<Utc> {
90		&self.date_last_added
91	}
92
93	#[must_use]
94	pub fn get_pool(&self) -> &str {
95		&self.pool
96	}
97
98	#[must_use]
99	pub const fn get_saver_units(&self) -> &u64 {
100		&self.saver_units
101	}
102}