use cosmwasm_std::{ Binary, Uint128, }; use schemars::JsonSchema; use serde::{ Deserialize, Serialize, }; use terraswap::asset::{ Asset, AssetInfo, }; type HumanAddr = String; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { // governance contract details pub gov_chain: u16, pub gov_address: Binary, pub wormhole_contract: HumanAddr, pub wrapped_asset_code_id: u64, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { RegisterAssetHook { asset_id: Binary, }, DepositTokens {}, WithdrawTokens { asset: AssetInfo, }, InitiateTransfer { asset: Asset, recipient_chain: u16, recipient: Binary, fee: Uint128, nonce: u32, }, InitiateTransferWithPayload { asset: Asset, recipient_chain: u16, recipient: Binary, fee: Uint128, payload: Binary, nonce: u32, }, SubmitVaa { data: Binary, }, CreateAssetMeta { asset_info: AssetInfo, nonce: u32, }, CompleteTransferWithPayload { data: Binary, relayer: HumanAddr, }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub struct MigrateMsg {} #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum QueryMsg { WrappedRegistry { chain: u16, address: Binary }, TransferInfo { vaa: Binary }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub struct WrappedRegistryResponse { pub address: HumanAddr, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub struct TransferInfoResponse { pub amount: Uint128, pub token_address: Vec, pub token_chain: u16, pub recipient: Vec, pub recipient_chain: u16, pub fee: Uint128, pub payload: Vec, }