hpl-interface 0.0.6

Interface definitions for CosmWasm Hyperlane contracts
Documentation
use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::HexBinary;

#[cw_serde]
pub struct InstantiateMsg {
    pub hrp: String,
    pub mailbox: String,
}

#[cw_serde]
pub enum ExecuteMsg {
    Announce {
        validator: HexBinary,
        signature: HexBinary,
        storage_location: String,
    },
}

#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
    #[returns(GetAnnounceStorageLocationsResponse)]
    GetAnnounceStorageLocations { validators: Vec<HexBinary> },

    #[returns(GetAnnouncedValidatorsResponse)]
    GetAnnouncedValidators {},

    #[returns(MailboxResponse)]
    Mailbox {},

    #[returns(LocalDomainResponse)]
    LocalDomain {},
}

#[cw_serde]
pub struct GetAnnounceStorageLocationsResponse {
    pub storage_locations: Vec<(String, Vec<String>)>,
}

#[cw_serde]
pub struct GetAnnouncedValidatorsResponse {
    pub validators: Vec<String>,
}

#[cw_serde]
pub struct MailboxResponse {
    pub mailbox: String,
}

#[cw_serde]
pub struct LocalDomainResponse {
    pub local_domain: u32,
}