1use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Default, Deserialize, Serialize)]
5#[serde(default)]
6pub struct ChainInfo {
7 pub chain_name: String,
8 pub status: String,
9 pub network_type: String,
10 pub pretty_name: String,
11 pub chain_id: String,
12 pub bech32_prefix: String,
13 pub daemon_name: String,
14 pub node_home: String,
15 pub slip44: u32,
16 pub genesis: Genesis,
17 pub codebase: Codebase,
18 pub peers: Peers,
19 pub apis: Apis,
20}
21
22#[derive(Clone, Debug, Default, Deserialize, Serialize)]
23#[serde(default)]
24pub struct Genesis {
25 pub genesis_url: String,
26}
27
28#[derive(Clone, Debug, Default, Deserialize, Serialize)]
29#[serde(default)]
30pub struct Codebase {
31 pub git_repo: String,
32 pub recommended_version: String,
33 #[serde(skip_serializing_if = "Vec::is_empty", default = "Vec::new")]
34 pub compatible_versions: Vec<String>,
35}
36
37#[derive(Clone, Debug, Default, Deserialize, Serialize)]
38#[serde(default)]
39pub struct Peers {
40 #[serde(skip_serializing_if = "Vec::is_empty", default = "Vec::new")]
41 pub seeds: Vec<Seed>,
42 pub persistent_peers: Vec<PersistentPeer>,
43}
44
45#[derive(Clone, Debug, Default, Deserialize, Serialize)]
46#[serde(default)]
47pub struct Seed {
48 pub id: String,
49 pub address: String,
50 pub provider: Option<String>,
51}
52
53#[derive(Clone, Debug, Default, Deserialize, Serialize)]
54pub struct PersistentPeer {
55 pub id: String,
56 pub address: String,
57}
58
59#[derive(Clone, Debug, Default, Deserialize, Serialize)]
60#[serde(default)]
61pub struct Apis {
62 #[serde(skip_serializing_if = "Vec::is_empty", default = "Vec::new")]
63 pub rpc: Vec<Rpc>,
64 #[serde(skip_serializing_if = "Vec::is_empty", default = "Vec::new")]
65 pub rest: Vec<Rest>,
66 pub grpc: Vec<Grpc>,
67}
68
69#[derive(Clone, Debug, Default, Deserialize, Serialize)]
70#[serde(default)]
71pub struct Rpc {
72 pub address: String,
73 pub provider: Option<String>,
74}
75
76#[derive(Clone, Debug, Default, Deserialize, Serialize)]
77#[serde(default)]
78pub struct Rest {
79 pub address: String,
80 pub provider: Option<String>,
81}
82
83#[derive(Clone, Debug, Default, Deserialize, Serialize)]
84#[serde(default)]
85pub struct Grpc {
86 pub address: String,
87 pub provider: Option<String>,
88}