chain_registry/
paths.rs

1/// Models for serializing and deserializing IBC path JSON data found in the `_IBC/` directory of the registry repository
2use serde::Deserialize;
3use serde::Serialize;
4
5#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[serde(default, rename_all = "camelCase")]
7pub struct IBCPath {
8    #[serde(rename = "$schema")]
9    pub schema: String,
10    #[serde(rename = "chain-1")]
11    pub chain_1: Chain1,
12    #[serde(rename = "chain-2")]
13    pub chain_2: Chain2,
14    pub channels: Vec<Channel>,
15}
16
17#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
18#[serde(default, rename_all = "camelCase")]
19pub struct Chain1 {
20    #[serde(rename = "chain-name")]
21    pub chain_name: String,
22    #[serde(rename = "client-id")]
23    pub client_id: String,
24    #[serde(rename = "connection-id")]
25    pub connection_id: String,
26}
27
28#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
29#[serde(default, rename_all = "camelCase")]
30pub struct Chain2 {
31    #[serde(rename = "chain-name")]
32    pub chain_name: String,
33    #[serde(rename = "client-id")]
34    pub client_id: String,
35    #[serde(rename = "connection-id")]
36    pub connection_id: String,
37}
38
39#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
40#[serde(default, rename_all = "camelCase")]
41pub struct Channel {
42    #[serde(rename = "chain-1")]
43    pub chain_1: ChannelChain1,
44    #[serde(rename = "chain-2")]
45    pub chain_2: ChannelChain2,
46    pub ordering: String,
47    pub version: String,
48    pub tags: Tags,
49}
50
51#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
52#[serde(default, rename_all = "camelCase")]
53pub struct ChannelChain1 {
54    #[serde(rename = "channel-id")]
55    pub channel_id: String,
56    #[serde(rename = "port-id")]
57    pub port_id: String,
58}
59
60#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
61#[serde(default, rename_all = "camelCase")]
62pub struct ChannelChain2 {
63    #[serde(rename = "channel-id")]
64    pub channel_id: String,
65    #[serde(rename = "port-id")]
66    pub port_id: String,
67}
68
69#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
70#[serde(default, rename_all = "camelCase")]
71pub struct Tags {
72    pub dex: String,
73    pub preferred: bool,
74    pub properties: String,
75    pub status: String,
76}
77
78/// Represents an IBC path tag
79pub enum Tag {
80    Dex(String),
81    Preferred(bool),
82    Properties(String),
83    Status(String),
84}