"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.wrappers_pb2
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _LogLevel:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _LogLevelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LogLevel.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    LOG_LEVEL_UNSPECIFIED: _LogLevel.ValueType  # 0
    DEBUG: _LogLevel.ValueType  # 1
    INFO: _LogLevel.ValueType  # 2
    WARNING: _LogLevel.ValueType  # 3
    ERROR: _LogLevel.ValueType  # 4
    FATAL: _LogLevel.ValueType  # 5
    PANIC: _LogLevel.ValueType  # 6

class LogLevel(_LogLevel, metaclass=_LogLevelEnumTypeWrapper): ...

LOG_LEVEL_UNSPECIFIED: LogLevel.ValueType  # 0
DEBUG: LogLevel.ValueType  # 1
INFO: LogLevel.ValueType  # 2
WARNING: LogLevel.ValueType  # 3
ERROR: LogLevel.ValueType  # 4
FATAL: LogLevel.ValueType  # 5
PANIC: LogLevel.ValueType  # 6
global___LogLevel = LogLevel

@typing.final
class MDBPostgreSQL(google.protobuf.message.Message):
    """TODO move to hosts.proto when it's created
    Configuration for MDB PostgreSQL host
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CLUSTER_ID_FIELD_NUMBER: builtins.int
    cluster_id: builtins.str
    def __init__(
        self,
        *,
        cluster_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["cluster_id", b"cluster_id"]) -> None: ...

global___MDBPostgreSQL = MDBPostgreSQL

@typing.final
class SPQRConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ROUTER_FIELD_NUMBER: builtins.int
    COORDINATOR_FIELD_NUMBER: builtins.int
    POSTGRESQL_FIELD_NUMBER: builtins.int
    INFRA_FIELD_NUMBER: builtins.int
    LOG_LEVEL_FIELD_NUMBER: builtins.int
    BALANCER_FIELD_NUMBER: builtins.int
    log_level: global___LogLevel.ValueType
    """SPQR default log level"""
    @property
    def router(self) -> global___RouterConfig:
        """SPQR router settings."""

    @property
    def coordinator(self) -> global___CoordinatorConfig:
        """SPQR coordinator settings."""

    @property
    def postgresql(self) -> global___PostgreSQLConfig:
        """PostgreSQL settings."""

    @property
    def infra(self) -> global___InfraConfig:
        """SPQR Infra (router+coordinator) settings."""

    @property
    def balancer(self) -> global___BalancerSettings:
        """SPQR Balancer settings."""

    def __init__(
        self,
        *,
        router: global___RouterConfig | None = ...,
        coordinator: global___CoordinatorConfig | None = ...,
        postgresql: global___PostgreSQLConfig | None = ...,
        infra: global___InfraConfig | None = ...,
        log_level: global___LogLevel.ValueType = ...,
        balancer: global___BalancerSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["balancer", b"balancer", "coordinator", b"coordinator", "infra", b"infra", "postgresql", b"postgresql", "router", b"router"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["balancer", b"balancer", "coordinator", b"coordinator", "infra", b"infra", "log_level", b"log_level", "postgresql", b"postgresql", "router", b"router"]) -> None: ...

global___SPQRConfig = SPQRConfig

@typing.final
class RouterConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONFIG_FIELD_NUMBER: builtins.int
    RESOURCES_FIELD_NUMBER: builtins.int
    @property
    def config(self) -> global___RouterSettings: ...
    @property
    def resources(self) -> global___Resources: ...
    def __init__(
        self,
        *,
        config: global___RouterSettings | None = ...,
        resources: global___Resources | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["config", b"config", "resources", b"resources"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["config", b"config", "resources", b"resources"]) -> None: ...

global___RouterConfig = RouterConfig

@typing.final
class CoordinatorConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONFIG_FIELD_NUMBER: builtins.int
    RESOURCES_FIELD_NUMBER: builtins.int
    @property
    def config(self) -> global___CoordinatorSettings: ...
    @property
    def resources(self) -> global___Resources: ...
    def __init__(
        self,
        *,
        config: global___CoordinatorSettings | None = ...,
        resources: global___Resources | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["config", b"config", "resources", b"resources"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["config", b"config", "resources", b"resources"]) -> None: ...

global___CoordinatorConfig = CoordinatorConfig

@typing.final
class PostgreSQLConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONFIG_FIELD_NUMBER: builtins.int
    RESOURCES_FIELD_NUMBER: builtins.int
    @property
    def config(self) -> global___PostgreSQLSettings: ...
    @property
    def resources(self) -> global___Resources: ...
    def __init__(
        self,
        *,
        config: global___PostgreSQLSettings | None = ...,
        resources: global___Resources | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["config", b"config", "resources", b"resources"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["config", b"config", "resources", b"resources"]) -> None: ...

global___PostgreSQLConfig = PostgreSQLConfig

@typing.final
class InfraConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCES_FIELD_NUMBER: builtins.int
    ROUTER_FIELD_NUMBER: builtins.int
    COORDINATOR_FIELD_NUMBER: builtins.int
    @property
    def resources(self) -> global___Resources: ...
    @property
    def router(self) -> global___RouterSettings: ...
    @property
    def coordinator(self) -> global___CoordinatorSettings: ...
    def __init__(
        self,
        *,
        resources: global___Resources | None = ...,
        router: global___RouterSettings | None = ...,
        coordinator: global___CoordinatorSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["coordinator", b"coordinator", "resources", b"resources", "router", b"router"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["coordinator", b"coordinator", "resources", b"resources", "router", b"router"]) -> None: ...

global___InfraConfig = InfraConfig

@typing.final
class BalancerSettings(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CPU_THRESHOLD_FIELD_NUMBER: builtins.int
    SPACE_THRESHOLD_FIELD_NUMBER: builtins.int
    STAT_INTERVAL_SEC_FIELD_NUMBER: builtins.int
    MAX_MOVE_COUNT_FIELD_NUMBER: builtins.int
    KEYS_PER_MOVE_FIELD_NUMBER: builtins.int
    TIMEOUT_FIELD_NUMBER: builtins.int
    @property
    def cpu_threshold(self) -> google.protobuf.wrappers_pb2.DoubleValue: ...
    @property
    def space_threshold(self) -> google.protobuf.wrappers_pb2.DoubleValue: ...
    @property
    def stat_interval_sec(self) -> google.protobuf.wrappers_pb2.Int64Value: ...
    @property
    def max_move_count(self) -> google.protobuf.wrappers_pb2.Int64Value: ...
    @property
    def keys_per_move(self) -> google.protobuf.wrappers_pb2.Int64Value: ...
    @property
    def timeout(self) -> google.protobuf.wrappers_pb2.Int64Value: ...
    def __init__(
        self,
        *,
        cpu_threshold: google.protobuf.wrappers_pb2.DoubleValue | None = ...,
        space_threshold: google.protobuf.wrappers_pb2.DoubleValue | None = ...,
        stat_interval_sec: google.protobuf.wrappers_pb2.Int64Value | None = ...,
        max_move_count: google.protobuf.wrappers_pb2.Int64Value | None = ...,
        keys_per_move: google.protobuf.wrappers_pb2.Int64Value | None = ...,
        timeout: google.protobuf.wrappers_pb2.Int64Value | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cpu_threshold", b"cpu_threshold", "keys_per_move", b"keys_per_move", "max_move_count", b"max_move_count", "space_threshold", b"space_threshold", "stat_interval_sec", b"stat_interval_sec", "timeout", b"timeout"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cpu_threshold", b"cpu_threshold", "keys_per_move", b"keys_per_move", "max_move_count", b"max_move_count", "space_threshold", b"space_threshold", "stat_interval_sec", b"stat_interval_sec", "timeout", b"timeout"]) -> None: ...

global___BalancerSettings = BalancerSettings

@typing.final
class RouterSettings(google.protobuf.message.Message):
    """Configuration of a SPQR router."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class _DefaultRouteBehavior:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _DefaultRouteBehaviorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[RouterSettings._DefaultRouteBehavior.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        DEFAULT_ROUTE_BEHAVIOR_UNSPECIFIED: RouterSettings._DefaultRouteBehavior.ValueType  # 0
        BLOCK: RouterSettings._DefaultRouteBehavior.ValueType  # 1
        ALLOW: RouterSettings._DefaultRouteBehavior.ValueType  # 2

    class DefaultRouteBehavior(_DefaultRouteBehavior, metaclass=_DefaultRouteBehaviorEnumTypeWrapper): ...
    DEFAULT_ROUTE_BEHAVIOR_UNSPECIFIED: RouterSettings.DefaultRouteBehavior.ValueType  # 0
    BLOCK: RouterSettings.DefaultRouteBehavior.ValueType  # 1
    ALLOW: RouterSettings.DefaultRouteBehavior.ValueType  # 2

    SHOW_NOTICE_MESSAGES_FIELD_NUMBER: builtins.int
    TIME_QUANTILES_FIELD_NUMBER: builtins.int
    DEFAULT_ROUTE_BEHAVIOR_FIELD_NUMBER: builtins.int
    PREFER_SAME_AVAILABILITY_ZONE_FIELD_NUMBER: builtins.int
    default_route_behavior: global___RouterSettings.DefaultRouteBehavior.ValueType
    @property
    def show_notice_messages(self) -> google.protobuf.wrappers_pb2.BoolValue: ...
    @property
    def time_quantiles(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def prefer_same_availability_zone(self) -> google.protobuf.wrappers_pb2.BoolValue: ...
    def __init__(
        self,
        *,
        show_notice_messages: google.protobuf.wrappers_pb2.BoolValue | None = ...,
        time_quantiles: collections.abc.Iterable[builtins.float] | None = ...,
        default_route_behavior: global___RouterSettings.DefaultRouteBehavior.ValueType = ...,
        prefer_same_availability_zone: google.protobuf.wrappers_pb2.BoolValue | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["prefer_same_availability_zone", b"prefer_same_availability_zone", "show_notice_messages", b"show_notice_messages"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["default_route_behavior", b"default_route_behavior", "prefer_same_availability_zone", b"prefer_same_availability_zone", "show_notice_messages", b"show_notice_messages", "time_quantiles", b"time_quantiles"]) -> None: ...

global___RouterSettings = RouterSettings

@typing.final
class CoordinatorSettings(google.protobuf.message.Message):
    """Configuration of a SPQR coordinator.
    TODO
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___CoordinatorSettings = CoordinatorSettings

@typing.final
class PostgreSQLSettings(google.protobuf.message.Message):
    """Configuration of a PostgreSQL.
    TODO
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___PostgreSQLSettings = PostgreSQLSettings

@typing.final
class Resources(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCE_PRESET_ID_FIELD_NUMBER: builtins.int
    DISK_SIZE_FIELD_NUMBER: builtins.int
    DISK_TYPE_ID_FIELD_NUMBER: builtins.int
    resource_preset_id: builtins.str
    """ID of the preset for computational resources available to a host (CPU, memory etc.).
    All available presets are listed in the [documentation](/docs/managed-spqr/concepts/instance-types).
    """
    disk_size: builtins.int
    """Volume of the storage available to a host, in bytes."""
    disk_type_id: builtins.str
    """Type of the storage environment for the host.
    Possible values:
    * network-hdd - network HDD drive,
    * network-ssd - network SSD drive,
    * local-ssd - local SSD storage.
    """
    def __init__(
        self,
        *,
        resource_preset_id: builtins.str = ...,
        disk_size: builtins.int = ...,
        disk_type_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["disk_size", b"disk_size", "disk_type_id", b"disk_type_id", "resource_preset_id", b"resource_preset_id"]) -> None: ...

global___Resources = Resources
