"""
@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 sys
import typing

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

class _MetricTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MetricType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    METRIC_TYPE_NOT_VALID: _MetricType.ValueType  # 0
    METRIC_TYPE_CPU: _MetricType.ValueType  # 1
    METRIC_TYPE_MEMORY: _MetricType.ValueType  # 2
    METRIC_TYPE_LATENCY: _MetricType.ValueType  # 3
    METRIC_TYPE_GPU: _MetricType.ValueType  # 4
    METRIC_TYPE_ERROR_RATE: _MetricType.ValueType  # 5
    METRIC_TYPE_THROUGHPUT: _MetricType.ValueType  # 6

class MetricType(_MetricType, metaclass=_MetricTypeEnumTypeWrapper): ...

METRIC_TYPE_NOT_VALID: MetricType.ValueType  # 0
METRIC_TYPE_CPU: MetricType.ValueType  # 1
METRIC_TYPE_MEMORY: MetricType.ValueType  # 2
METRIC_TYPE_LATENCY: MetricType.ValueType  # 3
METRIC_TYPE_GPU: MetricType.ValueType  # 4
METRIC_TYPE_ERROR_RATE: MetricType.ValueType  # 5
METRIC_TYPE_THROUGHPUT: MetricType.ValueType  # 6
global___MetricType = MetricType

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

class _AggregationTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AggregationType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    AGGREGATION_TYPE_NOT_VALID: _AggregationType.ValueType  # 0
    AGGREGATION_TYPE_MIN: _AggregationType.ValueType  # 1
    AGGREGATION_TYPE_MAX: _AggregationType.ValueType  # 2
    AGGREGATION_TYPE_AVERAGE: _AggregationType.ValueType  # 3
    AGGREGATION_TYPE_SUM: _AggregationType.ValueType  # 4
    AGGREGATION_TYPE_P50: _AggregationType.ValueType  # 5
    AGGREGATION_TYPE_P90: _AggregationType.ValueType  # 6
    AGGREGATION_TYPE_P95: _AggregationType.ValueType  # 7
    AGGREGATION_TYPE_P99: _AggregationType.ValueType  # 8

class AggregationType(_AggregationType, metaclass=_AggregationTypeEnumTypeWrapper): ...

AGGREGATION_TYPE_NOT_VALID: AggregationType.ValueType  # 0
AGGREGATION_TYPE_MIN: AggregationType.ValueType  # 1
AGGREGATION_TYPE_MAX: AggregationType.ValueType  # 2
AGGREGATION_TYPE_AVERAGE: AggregationType.ValueType  # 3
AGGREGATION_TYPE_SUM: AggregationType.ValueType  # 4
AGGREGATION_TYPE_P50: AggregationType.ValueType  # 5
AGGREGATION_TYPE_P90: AggregationType.ValueType  # 6
AGGREGATION_TYPE_P95: AggregationType.ValueType  # 7
AGGREGATION_TYPE_P99: AggregationType.ValueType  # 8
global___AggregationType = AggregationType

class AutoScalingConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MIN_REPLICA_COUNT_FIELD_NUMBER: builtins.int
    MAX_REPLICA_COUNT_FIELD_NUMBER: builtins.int
    POLLING_INTERVAL_FIELD_NUMBER: builtins.int
    COOL_DOWN_PERIOD_FIELD_NUMBER: builtins.int
    TRIGGERS_FIELD_NUMBER: builtins.int
    min_replica_count: builtins.int
    """The minimum number of replicas will scale the resource down to"""
    max_replica_count: builtins.int
    """The maximum number of replicas of the target resource"""
    polling_interval: builtins.int
    """This is the interval to check each trigger on. By default it's every 30 seconds."""
    cool_down_period: builtins.int
    """The period to wait after the last trigger reported active before scaling the resource back to 0. By default it’s 5 minutes (300 seconds)."""
    @property
    def triggers(self) -> global___Triggers: ...
    def __init__(
        self,
        *,
        min_replica_count: builtins.int = ...,
        max_replica_count: builtins.int = ...,
        polling_interval: builtins.int = ...,
        cool_down_period: builtins.int = ...,
        triggers: global___Triggers | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["triggers", b"triggers"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["cool_down_period", b"cool_down_period", "max_replica_count", b"max_replica_count", "min_replica_count", b"min_replica_count", "polling_interval", b"polling_interval", "triggers", b"triggers"]) -> None: ...

global___AutoScalingConfig = AutoScalingConfig

class Triggers(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRIGGERS_FIELD_NUMBER: builtins.int
    @property
    def triggers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Trigger]:
        """List of triggers to activate scaling(up/down) of the target resource based on"""
    def __init__(
        self,
        *,
        triggers: collections.abc.Iterable[global___Trigger] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["triggers", b"triggers"]) -> None: ...

global___Triggers = Triggers

class Trigger(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROMETHEUS_TRIGGER_FIELD_NUMBER: builtins.int
    @property
    def prometheus_trigger(self) -> global___PrometheusTrigger:
        """Prometheus trigger type"""
    def __init__(
        self,
        *,
        prometheus_trigger: global___PrometheusTrigger | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["prometheus_trigger", b"prometheus_trigger", "trigger_type", b"trigger_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["prometheus_trigger", b"prometheus_trigger", "trigger_type", b"trigger_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["trigger_type", b"trigger_type"]) -> typing_extensions.Literal["prometheus_trigger"] | None: ...

global___Trigger = Trigger

class PrometheusTrigger(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    QUERY_SPEC_FIELD_NUMBER: builtins.int
    THRESHOLD_FIELD_NUMBER: builtins.int
    @property
    def query_spec(self) -> global___QuerySpec:
        """Query specification"""
    threshold: builtins.int
    """Value to start scaling for"""
    def __init__(
        self,
        *,
        query_spec: global___QuerySpec | None = ...,
        threshold: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["query_spec", b"query_spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["query_spec", b"query_spec", "threshold", b"threshold"]) -> None: ...

global___PrometheusTrigger = PrometheusTrigger

class QuerySpec(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    METRIC_TYPE_FIELD_NUMBER: builtins.int
    AGGREGATION_TYPE_FIELD_NUMBER: builtins.int
    TIME_PERIOD_FIELD_NUMBER: builtins.int
    ERROR_CODE_FIELD_NUMBER: builtins.int
    metric_type: global___MetricType.ValueType
    """The type of the metric"""
    aggregation_type: global___AggregationType.ValueType
    """The type of the aggregation"""
    time_period: builtins.int
    """The period to run the query based on"""
    error_code: builtins.str
    """The error code to scale by in case of MetricType.METRIC_TYPE_ERROR_RATE - default is ".*" """
    def __init__(
        self,
        *,
        metric_type: global___MetricType.ValueType = ...,
        aggregation_type: global___AggregationType.ValueType = ...,
        time_period: builtins.int = ...,
        error_code: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["aggregation_type", b"aggregation_type", "error_code", b"error_code", "metric_type", b"metric_type", "time_period", b"time_period"]) -> None: ...

global___QuerySpec = QuerySpec
