hpl_interface/warp/
cw20.rs

1use 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 transfer remote
54    Handle(core::HandleMsg),
55
56    // transfer to remote
57    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}