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 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, pub addresses: Vec<GuardianAddress>, }
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}