from google.protobuf import descriptor_pb2 as _descriptor_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor
TABLE_FIELD_NUMBER: _ClassVar[int]
table: _descriptor.FieldDescriptor
SINGLETON_FIELD_NUMBER: _ClassVar[int]
singleton: _descriptor.FieldDescriptor

class TableDescriptor(_message.Message):
    __slots__ = ("primary_key", "index", "id")
    PRIMARY_KEY_FIELD_NUMBER: _ClassVar[int]
    INDEX_FIELD_NUMBER: _ClassVar[int]
    ID_FIELD_NUMBER: _ClassVar[int]
    primary_key: PrimaryKeyDescriptor
    index: _containers.RepeatedCompositeFieldContainer[SecondaryIndexDescriptor]
    id: int
    def __init__(self, primary_key: _Optional[_Union[PrimaryKeyDescriptor, _Mapping]] = ..., index: _Optional[_Iterable[_Union[SecondaryIndexDescriptor, _Mapping]]] = ..., id: _Optional[int] = ...) -> None: ...

class PrimaryKeyDescriptor(_message.Message):
    __slots__ = ("fields", "auto_increment")
    FIELDS_FIELD_NUMBER: _ClassVar[int]
    AUTO_INCREMENT_FIELD_NUMBER: _ClassVar[int]
    fields: str
    auto_increment: bool
    def __init__(self, fields: _Optional[str] = ..., auto_increment: bool = ...) -> None: ...

class SecondaryIndexDescriptor(_message.Message):
    __slots__ = ("fields", "id", "unique")
    FIELDS_FIELD_NUMBER: _ClassVar[int]
    ID_FIELD_NUMBER: _ClassVar[int]
    UNIQUE_FIELD_NUMBER: _ClassVar[int]
    fields: str
    id: int
    unique: bool
    def __init__(self, fields: _Optional[str] = ..., id: _Optional[int] = ..., unique: bool = ...) -> None: ...

class SingletonDescriptor(_message.Message):
    __slots__ = ("id",)
    ID_FIELD_NUMBER: _ClassVar[int]
    id: int
    def __init__(self, id: _Optional[int] = ...) -> None: ...
