cw_mini_wormhole/
msg.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Binary;
3
4use crate::state::{GuardianAddress, GuardianSetInfo};
5
6type HumanAddr = String;
7
8#[cw_serde]
9pub struct InstantiateMsg {
10    pub gov_chain: u16,
11    pub gov_address: Binary,
12
13    /// Guardian set to initialise the contract with.
14    pub initial_guardian_set: GuardianSetInfo,
15    pub guardian_set_expirity: u64,
16
17    pub chain_id: u16,
18}
19
20#[cw_serde]
21pub enum ExecuteMsg {
22    SubmitVAA { vaa: Binary },
23}
24
25#[cw_serde]
26#[derive(QueryResponses)]
27pub enum QueryMsg {
28    #[returns(GuardianSetInfoResponse)]
29    GuardianSetInfo {},
30
31    #[returns(VerifyVAAResponse)]
32    VerifyVAA { vaa: Binary, block_time: u64 },
33
34    #[returns(GetAddressHexResponse)]
35    QueryAddressHex { address: HumanAddr },
36}
37
38#[cw_serde]
39pub struct GuardianSetInfoResponse {
40    pub guardian_set_index: u32,         // Current guardian set index
41    pub addresses: Vec<GuardianAddress>, // List of querdian addresses
42}
43
44#[cw_serde]
45pub struct VerifyVAAResponse {
46    pub version: u8,
47    pub guardian_set_index: u32,
48    pub timestamp: u32,
49    pub nonce: u32,
50    pub len_signers: u8,
51
52    pub emitter_chain: u16,
53    pub emitter_address: Vec<u8>,
54    pub sequence: u64,
55    pub consistency_level: u8,
56    pub payload: Vec<u8>,
57
58    pub hash: Vec<u8>,
59}
60
61#[cw_serde]
62pub struct GetAddressHexResponse {
63    pub hex: String,
64}