1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cw20::Cw20ReceiveMsg;
3
4use crate::amount::Amount;
5use crate::state::ChannelInfo;
6
7#[cw_serde]
8pub struct InitMsg {
9 pub default_timeout: u64,
11 pub gov_contract: String,
13 pub allowlist: Vec<AllowMsg>,
15 pub default_gas_limit: Option<u64>,
18}
19
20#[cw_serde]
21pub struct AllowMsg {
22 pub contract: String,
23 pub gas_limit: Option<u64>,
24}
25
26#[cw_serde]
27pub struct MigrateMsg {
28 pub default_gas_limit: Option<u64>,
29}
30
31#[cw_serde]
32pub enum ExecuteMsg {
33 Receive(Cw20ReceiveMsg),
35 Transfer(TransferMsg),
37 Allow(AllowMsg),
39 UpdateAdmin { admin: String },
41}
42
43#[cw_serde]
45pub struct TransferMsg {
46 pub channel: String,
48 pub remote_address: String,
52 pub timeout: Option<u64>,
54 pub memo: Option<String>,
56}
57
58#[cw_serde]
59#[derive(QueryResponses)]
60pub enum QueryMsg {
61 #[returns(PortResponse)]
63 Port {},
64 #[returns(ListChannelsResponse)]
66 ListChannels {},
67 #[returns(ChannelResponse)]
69 Channel { id: String },
70 #[returns(ConfigResponse)]
72 Config {},
73 #[returns(cw_controllers::AdminResponse)]
74 Admin {},
75 #[returns(AllowedResponse)]
77 Allowed { contract: String },
78 #[returns(ListAllowedResponse)]
80 ListAllowed {
81 start_after: Option<String>,
82 limit: Option<u32>,
83 },
84}
85
86#[cw_serde]
87pub struct ListChannelsResponse {
88 pub channels: Vec<ChannelInfo>,
89}
90
91#[cw_serde]
92pub struct ChannelResponse {
93 pub info: ChannelInfo,
95 pub balances: Vec<Amount>,
97 pub total_sent: Vec<Amount>,
100}
101
102#[cw_serde]
103pub struct PortResponse {
104 pub port_id: String,
105}
106
107#[cw_serde]
108pub struct ConfigResponse {
109 pub default_timeout: u64,
110 pub default_gas_limit: Option<u64>,
111 pub gov_contract: String,
112}
113
114#[cw_serde]
115pub struct AllowedResponse {
116 pub is_allowed: bool,
117 pub gas_limit: Option<u64>,
118}
119
120#[cw_serde]
121pub struct ListAllowedResponse {
122 pub allow: Vec<AllowedInfo>,
123}
124
125#[cw_serde]
126pub struct AllowedInfo {
127 pub contract: String,
128 pub gas_limit: Option<u64>,
129}