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

113 lines
2.8 KiB
Rust
Raw Normal View History

use cosmwasm_std::{Binary, Uint128};
2022-06-16 09:48:01 -07:00
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use terraswap::asset::{Asset, AssetInfo};
2022-06-16 09:48:01 -07:00
use crate::token_address::{ExternalTokenId, TokenId};
2022-06-16 09:48:01 -07:00
type HumanAddr = String;
/// The instantiation parameters of the token bridge contract. See
/// [`crate::state::ConfigInfo`] for more details on what these fields mean.
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
2022-06-16 09:48:01 -07:00
pub struct InstantiateMsg {
pub gov_chain: u16,
pub gov_address: Binary,
pub wormhole_contract: HumanAddr,
pub wrapped_asset_code_id: u64,
pub chain_id: u16,
pub native_denom: String,
pub native_symbol: String,
pub native_decimals: u8,
2022-06-16 09:48:01 -07:00
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
RegisterAssetHook {
chain: u16,
token_address: ExternalTokenId,
2022-06-16 09:48:01 -07:00
},
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,
},
}
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
2022-06-16 09:48:01 -07:00
#[serde(rename_all = "snake_case")]
pub struct MigrateMsg {}
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
2022-06-16 09:48:01 -07:00
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
WrappedRegistry { chain: u16, address: Binary },
TransferInfo { vaa: Binary },
ExternalId { external_id: Binary },
IsVaaRedeemed { vaa: Binary },
2022-06-16 09:48:01 -07:00
}
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
2022-06-16 09:48:01 -07:00
#[serde(rename_all = "snake_case")]
pub struct WrappedRegistryResponse {
pub address: HumanAddr,
}
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
2022-06-16 09:48:01 -07:00
#[serde(rename_all = "snake_case")]
pub struct TransferInfoResponse {
pub amount: Uint128,
pub token_address: [u8; 32],
2022-06-16 09:48:01 -07:00
pub token_chain: u16,
pub recipient: [u8; 32],
2022-06-16 09:48:01 -07:00
pub recipient_chain: u16,
pub fee: Uint128,
pub payload: Vec<u8>,
}
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct ExternalIdResponse {
pub token_id: TokenId,
}
2022-09-30 02:18:54 -07:00
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct IsVaaRedeemedResponse {
pub is_redeemed: bool,
}