1use 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
78pub enum Tag {
80 Dex(String),
81 Preferred(bool),
82 Properties(String),
83 Status(String),
84}