
from ibc.core.client.v1 import client_pb2 as _client_pb2
from gogoproto import gogo_pb2 as _gogo_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
DESCRIPTOR: _descriptor.FileDescriptor

class GenesisMetadata(_message.Message):
    __slots__ = ['key', 'value']
    KEY_FIELD_NUMBER: _ClassVar[int]
    VALUE_FIELD_NUMBER: _ClassVar[int]
    key: bytes
    value: bytes

    def __init__(self, key: _Optional[bytes]=..., value: _Optional[bytes]=...) -> None:
        ...

class GenesisState(_message.Message):
    __slots__ = ['clients', 'clients_consensus', 'clients_metadata', 'create_localhost', 'next_client_sequence', 'params']
    CLIENTS_CONSENSUS_FIELD_NUMBER: _ClassVar[int]
    CLIENTS_FIELD_NUMBER: _ClassVar[int]
    CLIENTS_METADATA_FIELD_NUMBER: _ClassVar[int]
    CREATE_LOCALHOST_FIELD_NUMBER: _ClassVar[int]
    NEXT_CLIENT_SEQUENCE_FIELD_NUMBER: _ClassVar[int]
    PARAMS_FIELD_NUMBER: _ClassVar[int]
    clients: _containers.RepeatedCompositeFieldContainer[_client_pb2.IdentifiedClientState]
    clients_consensus: _containers.RepeatedCompositeFieldContainer[_client_pb2.ClientConsensusStates]
    clients_metadata: _containers.RepeatedCompositeFieldContainer[IdentifiedGenesisMetadata]
    create_localhost: bool
    next_client_sequence: int
    params: _client_pb2.Params

    def __init__(self, clients: _Optional[_Iterable[_Union[(_client_pb2.IdentifiedClientState, _Mapping)]]]=..., clients_consensus: _Optional[_Iterable[_Union[(_client_pb2.ClientConsensusStates, _Mapping)]]]=..., clients_metadata: _Optional[_Iterable[_Union[(IdentifiedGenesisMetadata, _Mapping)]]]=..., params: _Optional[_Union[(_client_pb2.Params, _Mapping)]]=..., create_localhost: bool=..., next_client_sequence: _Optional[int]=...) -> None:
        ...

class IdentifiedGenesisMetadata(_message.Message):
    __slots__ = ['client_id', 'client_metadata']
    CLIENT_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_METADATA_FIELD_NUMBER: _ClassVar[int]
    client_id: str
    client_metadata: _containers.RepeatedCompositeFieldContainer[GenesisMetadata]

    def __init__(self, client_id: _Optional[str]=..., client_metadata: _Optional[_Iterable[_Union[(GenesisMetadata, _Mapping)]]]=...) -> None:
        ...
