// @generated
// This file is @generated by prost-build.
/// Minter represents the minting state.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Minter {
    /// epoch_provisions represent the total epoch token provisions for the current
    /// epoch.
    #[prost(string, tag = "1")]
    pub epoch_provisions: ::prost::alloc::string::String,
}
/// DistributionProportions defines the distribution proportions of the minted
/// denom. In osmosis, it used to be called MintingRewardsDistribution.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DistributionProportions {
    /// staking defines the proportion of the minted minted_denom that is to be
    /// allocated as staking rewards.
    #[prost(string, tag = "1")]
    pub staking: ::prost::alloc::string::String,
    /// community_pool defines the proportion of the minted minted_denom that is
    /// to be allocated to the community pool.
    #[prost(string, tag = "2")]
    pub community_pool: ::prost::alloc::string::String,
}
/// Params defines the parameters for the mint module.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Params {
    /// mint_denom is the denom of the coin to mint.
    #[prost(string, tag = "1")]
    pub mint_denom: ::prost::alloc::string::String,
    /// genesis_epoch_provisions provide an initial value for the epoch provisions.
    #[prost(string, tag = "2")]
    pub genesis_epoch_provisions: ::prost::alloc::string::String,
    /// epoch_identifier mint parameter. e.g. "weekly", for 1 week epochs
    #[prost(string, tag = "3")]
    pub epoch_identifier: ::prost::alloc::string::String,
    /// reduction_period_in_epochs the number of epochs it takes
    /// to reduce the rewards
    #[prost(int64, tag = "4")]
    pub reduction_period_in_epochs: i64,
    /// reduction_factor is the reduction multiplier to execute
    /// at the end of each period set by reduction_period_in_epochs.
    #[prost(string, tag = "5")]
    pub reduction_factor: ::prost::alloc::string::String,
    /// distribution_proportions defines the distribution proportions of the minted
    /// denom. In other words, defines which stakeholders will receive the minted
    /// denoms and how much.
    #[prost(message, optional, tag = "6")]
    pub distribution_proportions: ::core::option::Option<DistributionProportions>,
    /// minting_rewards_distribution_start_epoch start epoch to distribute minting
    /// rewards
    #[prost(int64, tag = "7")]
    pub minting_rewards_distribution_start_epoch: i64,
    /// max_supply defines the maximum token supply for the chain
    #[prost(string, tag = "8")]
    pub max_supply: ::prost::alloc::string::String,
}
/// GenesisState defines the mint module's genesis state.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GenesisState {
    /// minter is a space for holding current rewards information.
    #[prost(message, optional, tag = "1")]
    pub minter: ::core::option::Option<Minter>,
    /// params defines all the parameters of the module.
    #[prost(message, optional, tag = "2")]
    pub params: ::core::option::Option<Params>,
}
/// QueryParamsRequest is the request type for the Query/Params RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryParamsRequest {}
/// QueryParamsResponse is the response type for the Query/Params RPC method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryParamsResponse {
    /// params defines the parameters of the module.
    #[prost(message, optional, tag = "1")]
    pub params: ::core::option::Option<Params>,
}
/// QueryEpochProvisionsRequest is the request type for the
/// Query/EpochProvisions RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryEpochProvisionsRequest {}
/// QueryEpochProvisionsResponse is the response type for the
/// Query/EpochProvisions RPC method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryEpochProvisionsResponse {
    /// epoch_provisions is the current minting per epoch provisions value.
    #[prost(bytes = "vec", tag = "1")]
    pub epoch_provisions: ::prost::alloc::vec::Vec<u8>,
}
/// QueryLastReductionEpochRequest is the request type for the
/// Query/LastReductionEpoch RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryLastReductionEpochRequest {}
/// QueryLastReductionEpochResponse is the response type for the
/// Query/LastReductionEpoch RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryLastReductionEpochResponse {
    /// last_reduction_epoch is the epoch number when reduction was last applied.
    #[prost(int64, tag = "1")]
    pub last_reduction_epoch: i64,
}
/// QueryReductionFactorRequest is the request type for the
/// Query/ReductionFactor RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryReductionFactorRequest {
    /// epoch_number is the epoch number to query reduction factor for.
    #[prost(int64, tag = "1")]
    pub epoch_number: i64,
}
/// QueryReductionFactorResponse is the response type for the
/// Query/ReductionFactor RPC method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryReductionFactorResponse {
    /// reduction_factor is the reduction factor applied at the specified epoch.
    #[prost(bytes = "vec", tag = "1")]
    pub reduction_factor: ::prost::alloc::vec::Vec<u8>,
}
/// ReductionEpochInfo represents information about a reduction epoch.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReductionEpochInfo {
    /// epoch_number is the epoch when reduction was applied.
    #[prost(int64, tag = "1")]
    pub epoch_number: i64,
    /// reduction_factor is the factor applied during this epoch.
    #[prost(bytes = "vec", tag = "2")]
    pub reduction_factor: ::prost::alloc::vec::Vec<u8>,
}
/// QueryAllReductionEpochsRequest is the request type for the
/// Query/AllReductionEpochs RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryAllReductionEpochsRequest {}
/// QueryAllReductionEpochsResponse is the response type for the
/// Query/AllReductionEpochs RPC method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryAllReductionEpochsResponse {
    /// reduction_epochs is the list of all reduction epochs.
    #[prost(message, repeated, tag = "1")]
    pub reduction_epochs: ::prost::alloc::vec::Vec<ReductionEpochInfo>,
}
/// QueryEpochProvisionsHistoryRequest is the request type for the
/// Query/EpochProvisionsHistory RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryEpochProvisionsHistoryRequest {
    /// epoch_number is the epoch number to query provisions for.
    #[prost(int64, tag = "1")]
    pub epoch_number: i64,
}
/// QueryEpochProvisionsHistoryResponse is the response type for the
/// Query/EpochProvisionsHistory RPC method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryEpochProvisionsHistoryResponse {
    /// epoch_provisions is the provisions for the specified epoch.
    #[prost(bytes = "vec", tag = "1")]
    pub epoch_provisions: ::prost::alloc::vec::Vec<u8>,
}
/// EpochProvisionInfo represents epoch provision information.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EpochProvisionInfo {
    /// epoch_number is the epoch number.
    #[prost(int64, tag = "1")]
    pub epoch_number: i64,
    /// provisions is the epoch provisions for this epoch.
    #[prost(bytes = "vec", tag = "2")]
    pub provisions: ::prost::alloc::vec::Vec<u8>,
}
/// QueryAllEpochProvisionsHistoryRequest is the request type for the
/// Query/AllEpochProvisionsHistory RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryAllEpochProvisionsHistoryRequest {}
/// QueryAllEpochProvisionsHistoryResponse is the response type for the
/// Query/AllEpochProvisionsHistory RPC method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryAllEpochProvisionsHistoryResponse {
    /// epoch_provisions_history is the list of all epoch provisions.
    #[prost(message, repeated, tag = "1")]
    pub epoch_provisions_history: ::prost::alloc::vec::Vec<EpochProvisionInfo>,
}
/// QueryGetAuthorityRequest is the request type for the GetAuthority RPC method.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryGetAuthorityRequest {}
/// QueryGetAuthorityResponse is the response type for the GetAuthority RPC
/// method.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryGetAuthorityResponse {
    /// authority is the authority address for the mint module.
    #[prost(string, tag = "1")]
    pub authority: ::prost::alloc::string::String,
}
/// MsgUpdateParams is the Msg/UpdateParams request type.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateParams {
    /// authority is the address that controls the module (defaults to x/gov unless
    /// overwritten).
    #[prost(string, tag = "1")]
    pub authority: ::prost::alloc::string::String,
    /// params defines the x/mint parameters to update.
    ///
    /// NOTE: All parameters must be supplied.
    #[prost(message, optional, tag = "2")]
    pub params: ::core::option::Option<Params>,
}
/// MsgUpdateParamsResponse defines the response structure for executing a
/// MsgUpdateParams message.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateParamsResponse {}
include!("d.mint.v1.tonic.rs");
// @@protoc_insertion_point(module)
