wormhole/terra/contracts/token-bridge/src/msg.rs

90 lines
2.1 KiB
Rust

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, Eq, 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, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct MigrateMsg {}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
WrappedRegistry { chain: u16, address: Binary },
TransferInfo { vaa: Binary },
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct WrappedRegistryResponse {
pub address: HumanAddr,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct TransferInfoResponse {
pub amount: Uint128,
pub token_address: [u8; 32],
pub token_chain: u16,
pub recipient: [u8; 32],
pub recipient_chain: u16,
pub fee: Uint128,
pub payload: Vec<u8>,
}