"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import cosmos.base.query.v1beta1.pagination_pb2
import cosmos.base.v1beta1.coin_pb2
import google.protobuf.descriptor
import google.protobuf.duration_pb2
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.timestamp_pb2
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class MsgCreateIncentivizationProgram(google.protobuf.message.Message):
    """MsgCreateIncentivizationProgram is the request needed for the CreateIncentivizationProgram RPC."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SENDER_FIELD_NUMBER: builtins.int
    LP_DENOM_FIELD_NUMBER: builtins.int
    MIN_LOCKUP_DURATION_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    EPOCHS_FIELD_NUMBER: builtins.int
    INITIAL_FUNDS_FIELD_NUMBER: builtins.int
    sender: typing.Text
    """sender defines the sender of the msg that needs to be signed."""

    lp_denom: typing.Text
    """lp_denom defines the liquidity pool denom that we want to incentivize."""

    @property
    def min_lockup_duration(self) -> google.protobuf.duration_pb2.Duration:
        """min_lockup_duration defines the minimum lockup duration
        required on the lp_denom to get the incentivization.
        """
        pass
    @property
    def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """start_time identifies when the incentivization starts."""
        pass
    epochs: builtins.int
    """epochs defines the number of epochs the incentivization
    program will last.
    """

    @property
    def initial_funds(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]:
        """initial_funds defines the initial funds to bootstrap the incentivization program's escrow.
        This is optional.
        """
        pass
    def __init__(self,
        *,
        sender: typing.Text = ...,
        lp_denom: typing.Text = ...,
        min_lockup_duration: typing.Optional[google.protobuf.duration_pb2.Duration] = ...,
        start_time: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        epochs: builtins.int = ...,
        initial_funds: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["min_lockup_duration",b"min_lockup_duration","start_time",b"start_time"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["epochs",b"epochs","initial_funds",b"initial_funds","lp_denom",b"lp_denom","min_lockup_duration",b"min_lockup_duration","sender",b"sender","start_time",b"start_time"]) -> None: ...
global___MsgCreateIncentivizationProgram = MsgCreateIncentivizationProgram

class MsgCreateIncentivizationProgramResponse(google.protobuf.message.Message):
    """MsgCreateIncentivizationProgramResponse is the response returned by the CreateIncentivizationProgram RPC."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PROGRAM_ID_FIELD_NUMBER: builtins.int
    program_id: builtins.int
    """program_id defines the incentivization program unique identifier."""

    def __init__(self,
        *,
        program_id: builtins.int = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["program_id",b"program_id"]) -> None: ...
global___MsgCreateIncentivizationProgramResponse = MsgCreateIncentivizationProgramResponse

class MsgFundIncentivizationProgram(google.protobuf.message.Message):
    """MsgFundIncentivizationProgram is the request for the FundIncentivizationProgram RPC."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SENDER_FIELD_NUMBER: builtins.int
    ID_FIELD_NUMBER: builtins.int
    FUNDS_FIELD_NUMBER: builtins.int
    sender: typing.Text
    """sender is the sender of the requests"""

    id: builtins.int
    """id marks the incentivization program id."""

    @property
    def funds(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]:
        """funds is the amount of money sender deposits in the program funding escrow."""
        pass
    def __init__(self,
        *,
        sender: typing.Text = ...,
        id: builtins.int = ...,
        funds: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["funds",b"funds","id",b"id","sender",b"sender"]) -> None: ...
global___MsgFundIncentivizationProgram = MsgFundIncentivizationProgram

class MsgFundIncentivizationProgramResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    def __init__(self,
        ) -> None: ...
global___MsgFundIncentivizationProgramResponse = MsgFundIncentivizationProgramResponse

class IncentivizationProgram(google.protobuf.message.Message):
    """IncentivizationProgram defines how an incentivization program looks like."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ID_FIELD_NUMBER: builtins.int
    ESCROW_ADDRESS_FIELD_NUMBER: builtins.int
    REMAINING_EPOCHS_FIELD_NUMBER: builtins.int
    LP_DENOM_FIELD_NUMBER: builtins.int
    MIN_LOCKUP_DURATION_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    id: builtins.int
    """id defines the unique uint64 id of the program"""

    escrow_address: typing.Text
    """escrow_address defines the escrow module account address
    for the incentivization program.
    """

    remaining_epochs: builtins.int
    """remaining_epochs defines the number of epochs left before the incentivization
    program can be considered finalized.
    """

    lp_denom: typing.Text
    """lp_denom defines the liquidity pool denom that is being incentivized."""

    @property
    def min_lockup_duration(self) -> google.protobuf.duration_pb2.Duration:
        """min_lockup_duration defines the minimum lp_denom lockup period
        required to get the epochs' rewards.
        """
        pass
    @property
    def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """start_time defines the incentivization program start time."""
        pass
    def __init__(self,
        *,
        id: builtins.int = ...,
        escrow_address: typing.Text = ...,
        remaining_epochs: builtins.int = ...,
        lp_denom: typing.Text = ...,
        min_lockup_duration: typing.Optional[google.protobuf.duration_pb2.Duration] = ...,
        start_time: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["min_lockup_duration",b"min_lockup_duration","start_time",b"start_time"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["escrow_address",b"escrow_address","id",b"id","lp_denom",b"lp_denom","min_lockup_duration",b"min_lockup_duration","remaining_epochs",b"remaining_epochs","start_time",b"start_time"]) -> None: ...
global___IncentivizationProgram = IncentivizationProgram

class GenesisState(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    INCENTIVIZATION_PROGRAMS_FIELD_NUMBER: builtins.int
    @property
    def incentivization_programs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IncentivizationProgram]: ...
    def __init__(self,
        *,
        incentivization_programs: typing.Optional[typing.Iterable[global___IncentivizationProgram]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["incentivization_programs",b"incentivization_programs"]) -> None: ...
global___GenesisState = GenesisState

class QueryIncentivizationProgramRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ID_FIELD_NUMBER: builtins.int
    id: builtins.int
    def __init__(self,
        *,
        id: builtins.int = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["id",b"id"]) -> None: ...
global___QueryIncentivizationProgramRequest = QueryIncentivizationProgramRequest

class QueryIncentivizationProgramResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    INCENTIVIZATION_PROGRAM_FIELD_NUMBER: builtins.int
    @property
    def incentivization_program(self) -> global___IncentivizationProgram: ...
    def __init__(self,
        *,
        incentivization_program: typing.Optional[global___IncentivizationProgram] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["incentivization_program",b"incentivization_program"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["incentivization_program",b"incentivization_program"]) -> None: ...
global___QueryIncentivizationProgramResponse = QueryIncentivizationProgramResponse

class QueryIncentivizationProgramsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PAGINATION_FIELD_NUMBER: builtins.int
    @property
    def pagination(self) -> cosmos.base.query.v1beta1.pagination_pb2.PageRequest: ...
    def __init__(self,
        *,
        pagination: typing.Optional[cosmos.base.query.v1beta1.pagination_pb2.PageRequest] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["pagination",b"pagination"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["pagination",b"pagination"]) -> None: ...
global___QueryIncentivizationProgramsRequest = QueryIncentivizationProgramsRequest

class QueryIncentivizationProgramsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    INCENTIVIZATION_PROGRAMS_FIELD_NUMBER: builtins.int
    PAGINATION_FIELD_NUMBER: builtins.int
    @property
    def incentivization_programs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IncentivizationProgram]: ...
    @property
    def pagination(self) -> cosmos.base.query.v1beta1.pagination_pb2.PageResponse: ...
    def __init__(self,
        *,
        incentivization_programs: typing.Optional[typing.Iterable[global___IncentivizationProgram]] = ...,
        pagination: typing.Optional[cosmos.base.query.v1beta1.pagination_pb2.PageResponse] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["pagination",b"pagination"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["incentivization_programs",b"incentivization_programs","pagination",b"pagination"]) -> None: ...
global___QueryIncentivizationProgramsResponse = QueryIncentivizationProgramsResponse
