"""
@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 _KubeAlertType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _KubeAlertTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_KubeAlertType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ALERT_TYPE_NOT_VALID: _KubeAlertType.ValueType  # 0
    ERROR_RATE: _KubeAlertType.ValueType  # 1
    THROUGHPUT: _KubeAlertType.ValueType  # 2
    LATENCY: _KubeAlertType.ValueType  # 3
    LATENCY_90: _KubeAlertType.ValueType  # 4
    LATENCY_95: _KubeAlertType.ValueType  # 5

class KubeAlertType(_KubeAlertType, metaclass=_KubeAlertTypeEnumTypeWrapper): ...

ALERT_TYPE_NOT_VALID: KubeAlertType.ValueType  # 0
ERROR_RATE: KubeAlertType.ValueType  # 1
THROUGHPUT: KubeAlertType.ValueType  # 2
LATENCY: KubeAlertType.ValueType  # 3
LATENCY_90: KubeAlertType.ValueType  # 4
LATENCY_95: KubeAlertType.ValueType  # 5
global___KubeAlertType = KubeAlertType

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

class _KubeReducerFunctionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_KubeReducerFunction.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    REDUCER_FUNCTION_NOT_VALID: _KubeReducerFunction.ValueType  # 0
    MIN: _KubeReducerFunction.ValueType  # 1
    MAX: _KubeReducerFunction.ValueType  # 2
    SUM: _KubeReducerFunction.ValueType  # 3
    COUNT: _KubeReducerFunction.ValueType  # 4
    LAST: _KubeReducerFunction.ValueType  # 5
    MEDIAN: _KubeReducerFunction.ValueType  # 6
    DIFF: _KubeReducerFunction.ValueType  # 7
    DIFF_ABS: _KubeReducerFunction.ValueType  # 8
    PERCENT_DIFF: _KubeReducerFunction.ValueType  # 9
    PERCENT_DIFF_ABS: _KubeReducerFunction.ValueType  # 10

class KubeReducerFunction(_KubeReducerFunction, metaclass=_KubeReducerFunctionEnumTypeWrapper): ...

REDUCER_FUNCTION_NOT_VALID: KubeReducerFunction.ValueType  # 0
MIN: KubeReducerFunction.ValueType  # 1
MAX: KubeReducerFunction.ValueType  # 2
SUM: KubeReducerFunction.ValueType  # 3
COUNT: KubeReducerFunction.ValueType  # 4
LAST: KubeReducerFunction.ValueType  # 5
MEDIAN: KubeReducerFunction.ValueType  # 6
DIFF: KubeReducerFunction.ValueType  # 7
DIFF_ABS: KubeReducerFunction.ValueType  # 8
PERCENT_DIFF: KubeReducerFunction.ValueType  # 9
PERCENT_DIFF_ABS: KubeReducerFunction.ValueType  # 10
global___KubeReducerFunction = KubeReducerFunction

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

class _KubeEvaluatorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_KubeEvaluatorType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    EVALUATOR_TYPE_NOT_VALID: _KubeEvaluatorType.ValueType  # 0
    IS_ABOVE: _KubeEvaluatorType.ValueType  # 1
    IS_BELOW: _KubeEvaluatorType.ValueType  # 2

class KubeEvaluatorType(_KubeEvaluatorType, metaclass=_KubeEvaluatorTypeEnumTypeWrapper): ...

EVALUATOR_TYPE_NOT_VALID: KubeEvaluatorType.ValueType  # 0
IS_ABOVE: KubeEvaluatorType.ValueType  # 1
IS_BELOW: KubeEvaluatorType.ValueType  # 2
global___KubeEvaluatorType = KubeEvaluatorType

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

    NOTIFICATION_CHANNELS_FIELD_NUMBER: builtins.int
    ALERT_SPEC_FIELD_NUMBER: builtins.int
    VARIATION_NAME_FIELD_NUMBER: builtins.int
    @property
    def notification_channels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """The channels to notify to"""
    @property
    def alert_spec(self) -> global___KubeAlertSpec:
        """The details of the alert"""
    variation_name: builtins.str
    """The variation name - if empty - general for the model."""
    def __init__(
        self,
        *,
        notification_channels: collections.abc.Iterable[builtins.str] | None = ...,
        alert_spec: global___KubeAlertSpec | None = ...,
        variation_name: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["alert_spec", b"alert_spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["alert_spec", b"alert_spec", "notification_channels", b"notification_channels", "variation_name", b"variation_name"]) -> None: ...

global___KubeAlertRule = KubeAlertRule

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

    REDUCER_FUNCTION_FIELD_NUMBER: builtins.int
    EVALUATOR_TYPE_FIELD_NUMBER: builtins.int
    EVALUATOR_THRESHOLD_FIELD_NUMBER: builtins.int
    EVALUATION_PERIOD_FIELD_NUMBER: builtins.int
    ALERT_TYPE_FIELD_NUMBER: builtins.int
    EVALUATION_THRESHOLD_FIELD_NUMBER: builtins.int
    reducer_function: global___KubeReducerFunction.ValueType
    """Reducer Function e.g. min, max"""
    evaluator_type: global___KubeEvaluatorType.ValueType
    """Evaluator function type e.g. greeter then, lower then"""
    evaluator_threshold: builtins.int
    """Evaluator threshold to alert for"""
    evaluation_period: builtins.int
    """Evaluation period"""
    alert_type: global___KubeAlertType.ValueType
    """The type of alert"""
    evaluation_threshold: builtins.float
    """Evaluation threshold"""
    def __init__(
        self,
        *,
        reducer_function: global___KubeReducerFunction.ValueType = ...,
        evaluator_type: global___KubeEvaluatorType.ValueType = ...,
        evaluator_threshold: builtins.int = ...,
        evaluation_period: builtins.int = ...,
        alert_type: global___KubeAlertType.ValueType = ...,
        evaluation_threshold: builtins.float = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["alert_type", b"alert_type", "evaluation_period", b"evaluation_period", "evaluation_threshold", b"evaluation_threshold", "evaluator_threshold", b"evaluator_threshold", "evaluator_type", b"evaluator_type", "reducer_function", b"reducer_function"]) -> None: ...

global___KubeAlertSpec = KubeAlertSpec

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

    NOTIFICATION_CHANNEL_ID_FIELD_NUMBER: builtins.int
    NOTIFICATION_CHANNEL_NAME_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int
    notification_channel_id: builtins.str
    """Notification Channel id"""
    notification_channel_name: builtins.str
    """Notification Channel name"""
    @property
    def settings(self) -> global___KubeNotificationChannelSettings:
        """Specific settings"""
    def __init__(
        self,
        *,
        notification_channel_id: builtins.str = ...,
        notification_channel_name: builtins.str = ...,
        settings: global___KubeNotificationChannelSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["settings", b"settings"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["notification_channel_id", b"notification_channel_id", "notification_channel_name", b"notification_channel_name", "settings", b"settings"]) -> None: ...

global___KubeNotificationChannel = KubeNotificationChannel

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

    SLACK_SETTINGS_FIELD_NUMBER: builtins.int
    OPSGENIE_SETTINGS_FIELD_NUMBER: builtins.int
    @property
    def slack_settings(self) -> global___KubeSlackNotificationChannelSettings: ...
    @property
    def opsgenie_settings(self) -> global___KubeOpsgenieNotificationChannelSettings: ...
    def __init__(
        self,
        *,
        slack_settings: global___KubeSlackNotificationChannelSettings | None = ...,
        opsgenie_settings: global___KubeOpsgenieNotificationChannelSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["opsgenie_settings", b"opsgenie_settings", "settings", b"settings", "slack_settings", b"slack_settings"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["opsgenie_settings", b"opsgenie_settings", "settings", b"settings", "slack_settings", b"slack_settings"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["settings", b"settings"]) -> typing_extensions.Literal["slack_settings", "opsgenie_settings"] | None: ...

global___KubeNotificationChannelSettings = KubeNotificationChannelSettings

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

    NOTIFICATION_CHANNEL_URL_FIELD_NUMBER: builtins.int
    notification_channel_url: builtins.str
    def __init__(
        self,
        *,
        notification_channel_url: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["notification_channel_url", b"notification_channel_url"]) -> None: ...

global___KubeSlackNotificationChannelSettings = KubeSlackNotificationChannelSettings

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

    API_URL_FIELD_NUMBER: builtins.int
    API_KEY_FIELD_NUMBER: builtins.int
    api_url: builtins.str
    """The API URL for Opsgenie instance"""
    api_key: builtins.str
    """The API Key as provided by Opsgenie for configured Grafana integration."""
    def __init__(
        self,
        *,
        api_url: builtins.str = ...,
        api_key: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["api_key", b"api_key", "api_url", b"api_url"]) -> None: ...

global___KubeOpsgenieNotificationChannelSettings = KubeOpsgenieNotificationChannelSettings
