Skip to main content

chain_registry/
chain.rs

1/// Contains models for serializing and deserializing the `chain.json` in a given chain's directory in the registry repository
2use 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}