hpl_interface/warp/
cw20.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::{self, RouterQuery},
10};
11
12use super::{TokenModeMsg, TokenWarpDefaultQueryMsg};
13
14pub use cw20_base::msg::InstantiateMsg as Cw20InitMsg;
15
16#[cw_serde]
17pub enum TokenOption {
18 Create {
19 code_id: u64,
20 init_msg: Box<cw20_base::msg::InstantiateMsg>,
21 },
22 Reuse {
23 contract: String,
24 },
25}
26
27#[cw_serde]
28pub struct Cw20ModeBridged {
29 pub code_id: u64,
30 pub init_msg: Box<cw20_base::msg::InstantiateMsg>,
31}
32
33#[cw_serde]
34pub struct Cw20ModeCollateral {
35 pub address: String,
36}
37
38#[cw_serde]
39pub struct InstantiateMsg {
40 pub token: TokenModeMsg<Cw20ModeBridged, Cw20ModeCollateral>,
41
42 pub hrp: String,
43 pub owner: String,
44 pub mailbox: String,
45}
46
47#[cw_serde]
48pub enum ExecuteMsg {
49 Ownable(OwnableMsg),
50 Router(router::RouterMsg<HexBinary>),
51 Connection(ConnectionMsg),
52
53 Handle(core::HandleMsg),
55
56 TransferRemote {
58 dest_domain: u32,
59 recipient: HexBinary,
60 amount: Uint128,
61 },
62}
63
64#[cw_serde]
65#[derive(QueryResponses)]
66#[query_responses(nested)]
67pub enum QueryMsg {
68 Ownable(OwnableQueryMsg),
69
70 Router(RouterQuery<HexBinary>),
71
72 Connection(ConnectionQueryMsg),
73
74 TokenDefault(TokenWarpDefaultQueryMsg),
75
76 IsmSpecifier(IsmSpecifierQueryMsg),
77}