"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import cosmos.upgrade.v1beta1.upgrade_pb2
import google.protobuf.any_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = ...

# IdentifiedClientState defines a client state with an additional client
# identifier field.
class IdentifiedClientState(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    CLIENT_ID_FIELD_NUMBER: builtins.int
    CLIENT_STATE_FIELD_NUMBER: builtins.int
    # client identifier
    client_id: typing.Text = ...
    # client state
    @property
    def client_state(self) -> google.protobuf.any_pb2.Any: ...
    def __init__(self,
        *,
        client_id : typing.Text = ...,
        client_state : typing.Optional[google.protobuf.any_pb2.Any] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"client_state",b"client_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"client_id",b"client_id",u"client_state",b"client_state"]) -> None: ...
global___IdentifiedClientState = IdentifiedClientState

# ConsensusStateWithHeight defines a consensus state with an additional height
# field.
class ConsensusStateWithHeight(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    HEIGHT_FIELD_NUMBER: builtins.int
    CONSENSUS_STATE_FIELD_NUMBER: builtins.int
    # consensus state height
    @property
    def height(self) -> global___Height: ...
    # consensus state
    @property
    def consensus_state(self) -> google.protobuf.any_pb2.Any: ...
    def __init__(self,
        *,
        height : typing.Optional[global___Height] = ...,
        consensus_state : typing.Optional[google.protobuf.any_pb2.Any] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"consensus_state",b"consensus_state",u"height",b"height"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"consensus_state",b"consensus_state",u"height",b"height"]) -> None: ...
global___ConsensusStateWithHeight = ConsensusStateWithHeight

# ClientConsensusStates defines all the stored consensus states for a given
# client.
class ClientConsensusStates(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    CLIENT_ID_FIELD_NUMBER: builtins.int
    CONSENSUS_STATES_FIELD_NUMBER: builtins.int
    # client identifier
    client_id: typing.Text = ...
    # consensus states and their heights associated with the client
    @property
    def consensus_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConsensusStateWithHeight]: ...
    def __init__(self,
        *,
        client_id : typing.Text = ...,
        consensus_states : typing.Optional[typing.Iterable[global___ConsensusStateWithHeight]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"client_id",b"client_id",u"consensus_states",b"consensus_states"]) -> None: ...
global___ClientConsensusStates = ClientConsensusStates

# ClientUpdateProposal is a governance proposal. If it passes, the substitute
# client's latest consensus state is copied over to the subject client. The proposal
# handler may fail if the subject and the substitute do not match in client and
# chain parameters (with exception to latest height, frozen height, and chain-id).
class ClientUpdateProposal(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TITLE_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    SUBJECT_CLIENT_ID_FIELD_NUMBER: builtins.int
    SUBSTITUTE_CLIENT_ID_FIELD_NUMBER: builtins.int
    # the title of the update proposal
    title: typing.Text = ...
    # the description of the proposal
    description: typing.Text = ...
    # the client identifier for the client to be updated if the proposal passes
    subject_client_id: typing.Text = ...
    # the substitute client identifier for the client standing in for the subject
    # client
    substitute_client_id: typing.Text = ...
    def __init__(self,
        *,
        title : typing.Text = ...,
        description : typing.Text = ...,
        subject_client_id : typing.Text = ...,
        substitute_client_id : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"description",b"description",u"subject_client_id",b"subject_client_id",u"substitute_client_id",b"substitute_client_id",u"title",b"title"]) -> None: ...
global___ClientUpdateProposal = ClientUpdateProposal

# UpgradeProposal is a gov Content type for initiating an IBC breaking
# upgrade.
class UpgradeProposal(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TITLE_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    PLAN_FIELD_NUMBER: builtins.int
    UPGRADED_CLIENT_STATE_FIELD_NUMBER: builtins.int
    title: typing.Text = ...
    description: typing.Text = ...
    @property
    def plan(self) -> cosmos.upgrade.v1beta1.upgrade_pb2.Plan: ...
    # An UpgradedClientState must be provided to perform an IBC breaking upgrade.
    # This will make the chain commit to the correct upgraded (self) client state
    # before the upgrade occurs, so that connecting chains can verify that the
    # new upgraded client is valid by verifying a proof on the previous version
    # of the chain. This will allow IBC connections to persist smoothly across
    # planned chain upgrades
    @property
    def upgraded_client_state(self) -> google.protobuf.any_pb2.Any: ...
    def __init__(self,
        *,
        title : typing.Text = ...,
        description : typing.Text = ...,
        plan : typing.Optional[cosmos.upgrade.v1beta1.upgrade_pb2.Plan] = ...,
        upgraded_client_state : typing.Optional[google.protobuf.any_pb2.Any] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"plan",b"plan",u"upgraded_client_state",b"upgraded_client_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"description",b"description",u"plan",b"plan",u"title",b"title",u"upgraded_client_state",b"upgraded_client_state"]) -> None: ...
global___UpgradeProposal = UpgradeProposal

# Height is a monotonically increasing data type
# that can be compared against another Height for the purposes of updating and
# freezing clients
#
# Normally the RevisionHeight is incremented at each height while keeping
# RevisionNumber the same. However some consensus algorithms may choose to
# reset the height in certain conditions e.g. hard forks, state-machine
# breaking changes In these cases, the RevisionNumber is incremented so that
# height continues to be monitonically increasing even as the RevisionHeight
# gets reset
class Height(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    REVISION_NUMBER_FIELD_NUMBER: builtins.int
    REVISION_HEIGHT_FIELD_NUMBER: builtins.int
    # the revision that the client is currently on
    revision_number: builtins.int = ...
    # the height within the given revision
    revision_height: builtins.int = ...
    def __init__(self,
        *,
        revision_number : builtins.int = ...,
        revision_height : builtins.int = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"revision_height",b"revision_height",u"revision_number",b"revision_number"]) -> None: ...
global___Height = Height

# Params defines the set of IBC light client parameters.
class Params(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ALLOWED_CLIENTS_FIELD_NUMBER: builtins.int
    # allowed_clients defines the list of allowed client state types.
    @property
    def allowed_clients(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
    def __init__(self,
        *,
        allowed_clients : typing.Optional[typing.Iterable[typing.Text]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"allowed_clients",b"allowed_clients"]) -> None: ...
global___Params = Params
