// @generated
// This file is @generated by prost-build.
/// AbstractAccount is a smart contract that is capable of initiating txs.
///
/// This account type is similar to BaseAccount except for it doesn't have a
/// pubkey. If a pubkey is needed, it creates and returns a new NilPubKey.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AbstractAccount {
    #[prost(string, tag = "1")]
    pub address: ::prost::alloc::string::String,
    #[prost(uint64, tag = "2")]
    pub account_number: u64,
    #[prost(uint64, tag = "3")]
    pub sequence: u64,
}
// ========================= Actors ===============================

/// The types of contracts used in the abstract account system,
/// currently only plugin registry contract is supported
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Actor {
    /// PluginRegistry is the contract that manages the plugins,
    /// We use the same name as the cosmwasm name
    Pluginregistry = 0,
}
impl Actor {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Pluginregistry => "pluginregistry",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "pluginregistry" => Some(Self::Pluginregistry),
            _ => None,
        }
    }
}
// ========================= Authenticators ===============================

/// The supported authenticator for proxy tx
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Authenticator {
    /// webauthn and default authenticator
    /// We use the same name as the cosmwasm name
    Webauthn = 0,
}
impl Authenticator {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Webauthn => "webauthn",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "webauthn" => Some(Self::Webauthn),
            _ => None,
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Params {
    /// MaxGasBefore is the maximum amount of gas that can be consumed by the
    /// contract call in the before_tx decorator.
    ///
    /// Must be greater than zero.
    #[prost(uint64, tag = "1")]
    pub max_gas_before: u64,
    /// MaxGasAfter is the maximum amount of gas that can be consumed by the
    /// contract call in the after_tx decorator.
    ///
    /// Must be greater than zero.
    #[prost(uint64, tag = "2")]
    pub max_gas_after: u64,
    /// Bech32Prefix for dchain
    #[prost(string, tag = "3")]
    pub bech32_prefix: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventAccountRegistered {
    #[prost(string, tag = "1")]
    pub creator: ::prost::alloc::string::String,
    #[prost(uint64, tag = "2")]
    pub code_id: u64,
    #[prost(string, tag = "3")]
    pub contract_addr: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdatedActor {
    #[prost(string, tag = "1")]
    pub actor: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub contract_addr: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdatedAuthenticator {
    #[prost(string, tag = "1")]
    pub authenticator: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub contract_addr: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdatedSupportedProxies {
    #[prost(uint64, repeated, tag = "1")]
    pub code_ids: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdatedParams {
    #[prost(message, optional, tag = "1")]
    pub params: ::core::option::Option<Params>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GenesisState {
    #[prost(message, optional, tag = "1")]
    pub params: ::core::option::Option<Params>,
    #[prost(uint64, tag = "2")]
    pub next_account_id: u64,
    /// This is map of Actor (converted from `Actor` enum to uint64 ) to
    /// sdk.Address
    #[prost(map = "uint64, bytes", tag = "3")]
    pub actors: ::std::collections::HashMap<u64, ::prost::alloc::vec::Vec<u8>>,
    /// This is map of Authenticators (converted from `Authenticators` enum to
    /// uint64) to sdk.AccAddress
    #[prost(map = "uint64, bytes", tag = "4")]
    pub authenticators: ::std::collections::HashMap<u64, ::prost::alloc::vec::Vec<u8>>,
    /// List of proxies that should be supported
    #[prost(uint64, repeated, tag = "5")]
    pub supported_proxies: ::prost::alloc::vec::Vec<u64>,
    /// Flag that indicates is it exported state or right from the beginning
    #[prost(bool, tag = "6")]
    pub exported: bool,
}
// ---------------------------------- Params -----------------------------------

#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryParamsRequest {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryParamsResponse {
    #[prost(message, optional, tag = "1")]
    pub params: ::core::option::Option<Params>,
}
// ---------------------------------- Actor -----------------------------------

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryActorAddressRequest {
    #[prost(string, tag = "1")]
    pub actor: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryActorAddressResponse {
    #[prost(string, tag = "1")]
    pub address: ::prost::alloc::string::String,
}
// ---------------------------------- Authenticator

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryAuthenticatorAddressRequest {
    #[prost(string, tag = "1")]
    pub authenticator: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryAuthenticatorAddressResponse {
    #[prost(string, tag = "1")]
    pub address: ::prost::alloc::string::String,
}
// ---------------------------------- SupportedProxies

#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QuerySupportedProxiesRequest {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuerySupportedProxiesResponse {
    #[prost(uint64, repeated, tag = "1")]
    pub proxies: ::prost::alloc::vec::Vec<u64>,
}
/// ---------------------------------- GetAuthority
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryGetAuthorityRequest {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryGetAuthorityResponse {
    #[prost(string, tag = "1")]
    pub authority: ::prost::alloc::string::String,
}
// ------------------------------- UpdateParams --------------------------------

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateParams {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub params: ::core::option::Option<Params>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateParamsResponse {}
// ------------------------------ RegisterAccount ------------------------------

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgRegisterAccount {
    /// Sender is the actor who signs the message
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// CodeID indicates which wasm binary code is to be used for this contract
    #[prost(uint64, tag = "2")]
    pub code_id: u64,
    /// Msg is the JSON-encoded instantiate message for the contract
    #[prost(bytes = "vec", tag = "3")]
    pub msg: ::prost::alloc::vec::Vec<u8>,
    /// Funds are coins to be deposited to the contract on instantiattion
    #[prost(message, repeated, tag = "4")]
    pub funds: ::prost::alloc::vec::Vec<super::super::super::cosmos::base::v1beta1::Coin>,
    /// Salt is an arbinary value to be used in deriving the account address.
    /// Max 64 bytes.
    #[prost(bytes = "vec", tag = "5")]
    pub salt: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgRegisterAccountResponse {
    #[prost(string, tag = "1")]
    pub address: ::prost::alloc::string::String,
    #[prost(bytes = "vec", tag = "2")]
    pub data: ::prost::alloc::vec::Vec<u8>,
}
// ----------------------------- Set Actors / Authenicators
// --------------------------

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateActor {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// The DChainActor role in string
    #[prost(string, tag = "2")]
    pub actor: ::prost::alloc::string::String,
    /// The address of the actor
    #[prost(string, tag = "3")]
    pub address: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateActorResponse {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateAuthenticator {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// The DChainAuthenticator role in string
    #[prost(string, tag = "2")]
    pub authenticator: ::prost::alloc::string::String,
    /// The address of the authenticator
    #[prost(string, tag = "3")]
    pub address: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateAuthenticatorResponse {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateSupportedProxies {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// Proxies are the map of proxy address to boolean value, which inicates
    /// whether proxy should be supported or not. (if true, proxy will be added, if
    /// false, proxy will be removed)
    #[prost(map = "uint64, bool", tag = "2")]
    pub proxies: ::std::collections::HashMap<u64, bool>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateSupportedProxiesResponse {}
include!("d.abstractaccount.v1.tonic.rs");
// @@protoc_insertion_point(module)
