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

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

class AlertType(_AlertType, metaclass=_AlertTypeEnumTypeWrapper): ...

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

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

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

class ReducerFunction(_ReducerFunction, metaclass=_ReducerFunctionEnumTypeWrapper): ...

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

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

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

class EvaluatorType(_EvaluatorType, metaclass=_EvaluatorTypeEnumTypeWrapper): ...

EVALUATOR_TYPE_NOT_VALID: EvaluatorType.ValueType  # 0
IS_ABOVE: EvaluatorType.ValueType  # 1
IS_BELOW: EvaluatorType.ValueType  # 2
global___EvaluatorType = EvaluatorType

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

    ALERT_SPEC_FIELD_NUMBER: builtins.int
    NOTIFICATIONS_CHANNELS_FIELD_NUMBER: builtins.int
    ALERT_ID_FIELD_NUMBER: builtins.int
    IS_ENABLED_FIELD_NUMBER: builtins.int
    SELECTED_VARIATION_NAME_FIELD_NUMBER: builtins.int
    @property
    def alert_spec(self) -> global___AlertSpec:
        """The definition of the alert rule"""
    @property
    def notifications_channels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NotificationChannelSpec]:
        """The notification channels to notify to"""
    alert_id: builtins.str
    """The alert id"""
    is_enabled: builtins.bool
    """If the alert rule is active."""
    selected_variation_name: builtins.str
    """The variation Name to apply alert on"""
    def __init__(
        self,
        *,
        alert_spec: global___AlertSpec | None = ...,
        notifications_channels: collections.abc.Iterable[global___NotificationChannelSpec] | None = ...,
        alert_id: builtins.str = ...,
        is_enabled: builtins.bool = ...,
        selected_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_id", b"alert_id", "alert_spec", b"alert_spec", "is_enabled", b"is_enabled", "notifications_channels", b"notifications_channels", "selected_variation_name", b"selected_variation_name"]) -> None: ...

global___AlertRule = AlertRule

class AlertSpec(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___ReducerFunction.ValueType
    """Reducer Function e.g. min, max"""
    evaluator_type: global___EvaluatorType.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___AlertType.ValueType
    """The type of the alert"""
    evaluation_threshold: builtins.float
    """Evaluation threshold"""
    def __init__(
        self,
        *,
        reducer_function: global___ReducerFunction.ValueType = ...,
        evaluator_type: global___EvaluatorType.ValueType = ...,
        evaluator_threshold: builtins.int = ...,
        evaluation_period: builtins.int = ...,
        alert_type: global___AlertType.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___AlertSpec = AlertSpec

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

    NOTIFICATION_CHANNEL_ID_FIELD_NUMBER: builtins.int
    NOTIFICATION_CHANNEL_NAME_FIELD_NUMBER: builtins.int
    notification_channel_id: builtins.str
    """The Id for notification"""
    notification_channel_name: builtins.str
    """The Notification Name to display"""
    def __init__(
        self,
        *,
        notification_channel_id: builtins.str = ...,
        notification_channel_name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["notification_channel_id", b"notification_channel_id", "notification_channel_name", b"notification_channel_name"]) -> None: ...

global___NotificationChannelSpec = NotificationChannelSpec

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

    NOTIFICATION_CHANNEL_ID_FIELD_NUMBER: builtins.int
    NOTIFICATION_CHANNEL_NAME_FIELD_NUMBER: builtins.int
    NOTIFICATION_SETTINGS_FIELD_NUMBER: builtins.int
    notification_channel_id: builtins.str
    """The Id for notification"""
    notification_channel_name: builtins.str
    """The Notification Name to display"""
    @property
    def notification_settings(self) -> global___NotificationChannelSettings:
        """The settings of the notification channel"""
    def __init__(
        self,
        *,
        notification_channel_id: builtins.str = ...,
        notification_channel_name: builtins.str = ...,
        notification_settings: global___NotificationChannelSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["notification_settings", b"notification_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", "notification_settings", b"notification_settings"]) -> None: ...

global___NotificationChannel = NotificationChannel

class NotificationChannelSettings(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___SlackSettings: ...
    @property
    def opsgenie_settings(self) -> global___OpsgenieSettings: ...
    def __init__(
        self,
        *,
        slack_settings: global___SlackSettings | None = ...,
        opsgenie_settings: global___OpsgenieSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["opsgenie_settings", b"opsgenie_settings", "slack_settings", b"slack_settings", "type", b"type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["opsgenie_settings", b"opsgenie_settings", "slack_settings", b"slack_settings", "type", b"type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["type", b"type"]) -> typing_extensions.Literal["slack_settings", "opsgenie_settings"] | None: ...

global___NotificationChannelSettings = NotificationChannelSettings

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

    URL_FIELD_NUMBER: builtins.int
    url: builtins.str
    """Url of webhook of slack channel"""
    def __init__(
        self,
        *,
        url: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["url", b"url"]) -> None: ...

global___SlackSettings = SlackSettings

class OpsgenieSettings(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___OpsgenieSettings = OpsgenieSettings
