1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
use serde::de::{self, Deserialize, Deserializer};
use std::str::FromStr;
use std::fmt::Display;
use types::arguments::address::Address;
#[derive(Debug, Deserialize)]
pub struct AddressBalance {
pub balance: u64,
pub received: u64,
}
#[derive(Debug, Deserialize)]
pub struct AddressDeltas(pub Vec<AddressDelta>);
#[derive(Debug, Deserialize)]
pub struct AddressDelta {
pub satoshis: i64,
pub txid: String,
pub index: u32,
pub blockindex: u64,
pub height: u64,
pub address: String,
}
#[derive(Debug, Deserialize)]
pub struct AddressMempool(pub Vec<AddressMempoolDelta>);
#[derive(Debug, Deserialize)]
pub struct AddressMempoolDelta {
pub address: String,
pub txid: String,
pub index: u32,
pub satoshis: i64,
pub timestamp: u64,
pub prevtxid: String,
pub prevout: u32,
}
#[derive(Debug, Deserialize)]
pub struct AddressTxIDs(pub Vec<String>);
#[derive(Debug, Deserialize, Clone)]
pub struct AddressUtxos(pub Vec<AddressUtxo>);
#[derive(Debug, Deserialize, Clone)]
pub struct AddressUtxo {
pub address: String,
pub txid: String,
#[serde(rename = "outputIndex")]
pub output_index: u32,
pub script: String,
pub satoshis: u64,
pub height: u64,
}
#[derive(Debug, Deserialize)]
pub struct Snapshot {
pub start_time: u64,
pub addresses: Vec<SnapshotAddress>,
pub total: f64,
pub average: f64,
pub utxos: u64,
pub total_addresses: u64,
pub ending_height: u64,
pub end_time: u64,
pub ignored_addresses: u32,
pub skipped_cc_utxos: u32,
pub cc_utxo_value: u32,
#[serde(rename = "total_includeCCvouts")]
pub total_include_ccvouts: f64,
}
#[derive(Debug, Deserialize)]
pub struct SnapshotAddress {
pub addr: String,
#[serde(deserialize_with = "from_str")]
pub amount: f64
}
fn from_str<'de, T, D>(deserializer: D) -> Result<T, D::Error>
where T: FromStr,
T::Err: Display,
D: Deserializer<'de>
{
let s = String::deserialize(deserializer)?;
T::from_str(&s).map_err(de::Error::custom)
}
#[derive(Debug, Deserialize)]
pub struct AddressGroupings(Vec<Vec<Vec<AddressGrouping>>>);
#[derive(Debug, Deserialize)]
pub struct AddressGrouping {
pub address: Address,
pub amount: f64,
pub account: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct Multisig {
pub address: Address,
#[serde(rename = "redeemScript")]
pub redeem_script: String
}