1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::HexBinary;
3
4#[cw_serde]
5pub struct InstantiateMsg {
6 pub hrp: String,
7 pub mailbox: String,
8}
9
10#[cw_serde]
11pub enum ExecuteMsg {
12 Announce {
13 validator: HexBinary,
14 signature: HexBinary,
15 storage_location: String,
16 },
17}
18
19#[cw_serde]
20#[derive(QueryResponses)]
21pub enum QueryMsg {
22 #[returns(GetAnnounceStorageLocationsResponse)]
23 GetAnnounceStorageLocations { validators: Vec<HexBinary> },
24
25 #[returns(GetAnnouncedValidatorsResponse)]
26 GetAnnouncedValidators {},
27
28 #[returns(MailboxResponse)]
29 Mailbox {},
30
31 #[returns(LocalDomainResponse)]
32 LocalDomain {},
33}
34
35#[cw_serde]
36pub struct GetAnnounceStorageLocationsResponse {
37 pub storage_locations: Vec<(String, Vec<String>)>,
38}
39
40#[cw_serde]
41pub struct GetAnnouncedValidatorsResponse {
42 pub validators: Vec<String>,
43}
44
45#[cw_serde]
46pub struct MailboxResponse {
47 pub mailbox: String,
48}
49
50#[cw_serde]
51pub struct LocalDomainResponse {
52 pub local_domain: u32,
53}