use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::{Addr, Uint128};
use cw20::Cw20ReceiveMsg;
use crate::{ado_base::ownership::OwnershipMessage, amp::AndrAddr};
#[cw_serde]
pub struct InstantiateMsg {
pub kernel_address: String,
pub owner: Option<String>,
}
#[cw_serde]
pub enum ExecuteMsg {
Deposit {
address: Option<AndrAddr>,
},
PayFee {
payee: Addr,
action: String,
},
Withdraw {
amount: Option<Uint128>,
asset: String,
},
#[serde(rename = "withdraw_cw20")]
WithdrawCW20 {
amount: Option<Uint128>,
asset: String,
},
Receive(Cw20ReceiveMsg),
Ownership(OwnershipMessage),
}
#[cw_serde]
pub enum Cw20HookMsg {
Deposit { address: Option<AndrAddr> },
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
#[returns(Uint128)]
Balance { asset: String, address: AndrAddr },
#[returns(crate::ado_base::version::VersionResponse)]
Version {},
#[returns(crate::ado_base::ado_type::TypeResponse)]
Type {},
#[returns(crate::ado_base::ownership::ContractOwnerResponse)]
Owner {},
#[returns(crate::ado_base::kernel_address::KernelAddressResponse)]
KernelAddress {},
}
#[cfg(test)]
mod test {}