1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::types::{Asset, Price};
7
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
9pub struct DynamicGlobalProperties {
10 pub head_block_number: u32,
11 pub head_block_id: String,
12 pub time: String,
13 #[serde(default)]
14 pub current_witness: Option<String>,
15 #[serde(default)]
16 pub last_irreversible_block_num: u32,
17 #[serde(default)]
18 pub total_vesting_fund_hive: Option<Asset>,
19 #[serde(default)]
20 pub total_vesting_shares: Option<Asset>,
21 #[serde(flatten)]
22 pub extra: BTreeMap<String, Value>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
26pub struct ChainProperties {
27 pub account_creation_fee: Asset,
28 pub maximum_block_size: u32,
29 pub hbd_interest_rate: u16,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
33pub struct FeedHistory {
34 #[serde(default)]
35 pub current_median_history: Option<Price>,
36 #[serde(default)]
37 pub price_history: Vec<Price>,
38 #[serde(flatten)]
39 pub extra: BTreeMap<String, Value>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
43pub struct ScheduledHardfork {
44 pub hf_version: String,
45 pub live_time: String,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
49pub struct RewardFund {
50 #[serde(default)]
51 pub id: Option<u32>,
52 #[serde(default)]
53 pub name: Option<String>,
54 #[serde(default)]
55 pub reward_balance: Option<Asset>,
56 #[serde(default)]
57 pub recent_claims: Option<String>,
58 #[serde(flatten)]
59 pub extra: BTreeMap<String, Value>,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
63pub struct Version {
64 pub blockchain_version: String,
65 pub hive_revision: String,
66 pub fc_revision: String,
67}