1use serde::{Deserialize, Serialize};
2use serde_aux::prelude::*;
3
4use crate::crypto::base64::Base64;
5
6#[derive(Serialize, Deserialize, Debug)]
7pub struct NetworkInfo {
8 pub network: String,
9 pub version: usize,
10 pub release: usize,
11 pub height: u128,
12 pub current: Base64,
13 pub blocks: usize,
14 pub peers: usize,
15 pub queue_length: usize,
16 pub node_state_latency: usize,
17}
18
19#[derive(Serialize, Deserialize, Debug)]
20pub struct ProofOfAccess {
21 pub option: String,
22 pub tx_path: Base64,
23 pub data_path: Base64,
24 pub chunk: Base64,
25}
26
27#[derive(Serialize, Deserialize, Debug)]
29pub struct BlockInfo {
30 pub nonce: Base64,
31 pub previous_block: Base64,
32 pub timestamp: u64,
33 pub last_retarget: u64,
34 #[serde(deserialize_with = "deserialize_string_from_number")]
35 pub diff: String,
36 pub height: u64,
37 pub hash: Base64,
38 pub indep_hash: Base64,
39 pub txs: Vec<Base64>,
40 pub wallet_list: Base64,
41 pub reward_addr: Base64,
42 pub tags: Vec<Tag>,
43 pub reward_pool: u64,
44 pub weave_size: u64,
45 pub block_size: u64,
46
47 pub cumulative_diff: Option<String>,
49 pub hash_list_merkle: Option<Base64>,
50
51 pub tx_root: Base64,
53 pub tx_tree: Vec<Base64>,
54 pub poa: ProofOfAccess,
55}
56#[derive(Deserialize, Debug, Default, Eq, PartialEq)]
57pub struct Tx {
58 pub format: u8,
59 pub id: Base64,
60 pub last_tx: Base64,
61 pub owner: Base64,
62 pub tags: Vec<Tag>,
63 pub target: Base64,
64 pub quantity: String,
65 pub data_root: Base64,
66 pub data: Base64,
67 pub data_size: String,
68 pub reward: String,
69 pub signature: Base64,
70}
71
72#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq)]
73pub struct Tag {
74 pub name: Base64,
75 pub value: Base64,
76}
77
78#[derive(Serialize, Deserialize)]
79pub struct TxStatus {
80 pub block_height: u128,
81 pub block_indep_hash: Base64,
82 pub number_of_confirmations: u64,
83}
84
85#[derive(Serialize, Deserialize, Debug, Default, Eq, PartialEq)]
86pub struct Chunk {
87 pub data_root: Base64,
88 pub data_size: u64,
89 pub data_path: Base64,
90 pub offset: usize,
91 pub chunk: Base64,
92}