hpl_interface/warp/
native.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::{HexBinary, Uint128};
3
4use crate::{
5 connection::{ConnectionMsg, ConnectionQueryMsg},
6 core,
7 ism::IsmSpecifierQueryMsg,
8 ownable::{OwnableMsg, OwnableQueryMsg},
9 router::{RouterMsg, RouterQuery},
10};
11
12use super::{TokenModeMsg, TokenWarpDefaultQueryMsg};
13
14#[cw_serde]
15pub struct DenomUnit {
16 pub denom: String,
17 #[serde(
18 serialize_with = "as_str::serialize",
19 deserialize_with = "as_str::deserialize"
20 )]
21 pub exponent: u32,
22 pub aliases: Vec<String>,
23}
24
25#[cw_serde]
26pub struct Metadata {
27 pub description: String,
28 pub denom_units: Vec<DenomUnit>,
29 pub base: String,
30 pub display: String,
31 pub name: String,
32 pub symbol: String,
33}
34
35#[cw_serde]
36pub struct NativeModeBriged {
37 pub denom: String,
38 pub metadata: Option<Metadata>,
39}
40
41#[cw_serde]
42pub struct NativeModeCollateral {
43 pub denom: String,
44}
45
46#[cw_serde]
47pub struct InstantiateMsg {
48 pub token: TokenModeMsg<NativeModeBriged, NativeModeCollateral>,
49
50 pub hrp: String,
51 pub owner: String,
52 pub mailbox: String,
53}
54
55#[cw_serde]
56pub enum ExecuteMsg {
57 Ownable(OwnableMsg),
58 Router(RouterMsg<HexBinary>),
59 Connection(ConnectionMsg),
60
61 Handle(core::HandleMsg),
63
64 TransferRemote {
66 dest_domain: u32,
67 recipient: HexBinary,
68 amount: Uint128,
69 },
70}
71
72#[cw_serde]
73#[derive(QueryResponses)]
74#[query_responses(nested)]
75pub enum QueryMsg {
76 Ownable(OwnableQueryMsg),
77
78 Router(RouterQuery<HexBinary>),
79
80 Connection(ConnectionQueryMsg),
81
82 TokenDefault(TokenWarpDefaultQueryMsg),
83
84 IsmSpecifier(IsmSpecifierQueryMsg),
85}
86
87mod as_str {
88 use serde::{de, Deserialize, Deserializer, Serializer};
89 use std::{fmt::Display, str::FromStr};
90
91 pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
92 where
93 T: FromStr,
94 T::Err: Display,
95 D: Deserializer<'de>,
96 {
97 let s = String::deserialize(deserializer)?;
98 T::from_str(&s).map_err(de::Error::custom)
99 }
100
101 pub fn serialize<S, T>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
102 where
103 S: Serializer,
104 T: Display,
105 {
106 serializer.serialize_str(&value.to_string())
107 }
108}