from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
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

class LogLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    LOG_LEVEL_UNSPECIFIED: _ClassVar[LogLevel]
    LOG_LEVEL_DEBUG: _ClassVar[LogLevel]
    LOG_LEVEL_INFO: _ClassVar[LogLevel]
    LOG_LEVEL_WARNING: _ClassVar[LogLevel]
    LOG_LEVEL_ERROR: _ClassVar[LogLevel]
    LOG_LEVEL_FATAL: _ClassVar[LogLevel]
LOG_LEVEL_UNSPECIFIED: LogLevel
LOG_LEVEL_DEBUG: LogLevel
LOG_LEVEL_INFO: LogLevel
LOG_LEVEL_WARNING: LogLevel
LOG_LEVEL_ERROR: LogLevel
LOG_LEVEL_FATAL: LogLevel

class LogRoute(_message.Message):
    __slots__ = ("level", "terminal", "file")
    LEVEL_FIELD_NUMBER: _ClassVar[int]
    TERMINAL_FIELD_NUMBER: _ClassVar[int]
    FILE_FIELD_NUMBER: _ClassVar[int]
    level: LogLevel
    terminal: bool
    file: bool
    def __init__(self, level: _Optional[_Union[LogLevel, str]] = ..., terminal: _Optional[bool] = ..., file: _Optional[bool] = ...) -> None: ...

class LogFormat(_message.Message):
    __slots__ = ("show_time", "show_level", "show_thread_id", "show_source_location")
    SHOW_TIME_FIELD_NUMBER: _ClassVar[int]
    SHOW_LEVEL_FIELD_NUMBER: _ClassVar[int]
    SHOW_THREAD_ID_FIELD_NUMBER: _ClassVar[int]
    SHOW_SOURCE_LOCATION_FIELD_NUMBER: _ClassVar[int]
    show_time: bool
    show_level: bool
    show_thread_id: bool
    show_source_location: bool
    def __init__(self, show_time: _Optional[bool] = ..., show_level: _Optional[bool] = ..., show_thread_id: _Optional[bool] = ..., show_source_location: _Optional[bool] = ...) -> None: ...

class LoggerConfig(_message.Message):
    __slots__ = ("minimum_level", "routes", "directory", "max_file_size_mb", "flush_interval_seconds", "format")
    MINIMUM_LEVEL_FIELD_NUMBER: _ClassVar[int]
    ROUTES_FIELD_NUMBER: _ClassVar[int]
    DIRECTORY_FIELD_NUMBER: _ClassVar[int]
    MAX_FILE_SIZE_MB_FIELD_NUMBER: _ClassVar[int]
    FLUSH_INTERVAL_SECONDS_FIELD_NUMBER: _ClassVar[int]
    FORMAT_FIELD_NUMBER: _ClassVar[int]
    minimum_level: LogLevel
    routes: _containers.RepeatedCompositeFieldContainer[LogRoute]
    directory: str
    max_file_size_mb: int
    flush_interval_seconds: int
    format: LogFormat
    def __init__(self, minimum_level: _Optional[_Union[LogLevel, str]] = ..., routes: _Optional[_Iterable[_Union[LogRoute, _Mapping]]] = ..., directory: _Optional[str] = ..., max_file_size_mb: _Optional[int] = ..., flush_interval_seconds: _Optional[int] = ..., format: _Optional[_Union[LogFormat, _Mapping]] = ...) -> None: ...

class LoggerRootConfig(_message.Message):
    __slots__ = ("logger",)
    LOGGER_FIELD_NUMBER: _ClassVar[int]
    logger: LoggerConfig
    def __init__(self, logger: _Optional[_Union[LoggerConfig, _Mapping]] = ...) -> None: ...
