"""
@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 sentry_protos.snuba.v1alpha.trace_item_attribute_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

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

    FILTERS_FIELD_NUMBER: builtins.int
    @property
    def filters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TraceItemFilter]: ...
    def __init__(
        self,
        *,
        filters: collections.abc.Iterable[global___TraceItemFilter] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["filters", b"filters"]) -> None: ...

global___AndFilter = AndFilter

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

    FILTERS_FIELD_NUMBER: builtins.int
    @property
    def filters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TraceItemFilter]: ...
    def __init__(
        self,
        *,
        filters: collections.abc.Iterable[global___TraceItemFilter] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["filters", b"filters"]) -> None: ...

global___OrFilter = OrFilter

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

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

    class _OpEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ComparisonFilter._Op.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        OP_UNSPECIFIED: ComparisonFilter._Op.ValueType  # 0
        OP_LESS_THAN: ComparisonFilter._Op.ValueType  # 1
        OP_GREATER_THAN: ComparisonFilter._Op.ValueType  # 2
        OP_LESS_THAN_OR_EQUALS: ComparisonFilter._Op.ValueType  # 3
        OP_GREATER_THAN_OR_EQUALS: ComparisonFilter._Op.ValueType  # 4
        OP_EQUALS: ComparisonFilter._Op.ValueType  # 5
        OP_NOT_EQUALS: ComparisonFilter._Op.ValueType  # 6
        OP_LIKE: ComparisonFilter._Op.ValueType  # 7
        """string only"""
        OP_NOT_LIKE: ComparisonFilter._Op.ValueType  # 8
        """string only"""

    class Op(_Op, metaclass=_OpEnumTypeWrapper): ...
    OP_UNSPECIFIED: ComparisonFilter.Op.ValueType  # 0
    OP_LESS_THAN: ComparisonFilter.Op.ValueType  # 1
    OP_GREATER_THAN: ComparisonFilter.Op.ValueType  # 2
    OP_LESS_THAN_OR_EQUALS: ComparisonFilter.Op.ValueType  # 3
    OP_GREATER_THAN_OR_EQUALS: ComparisonFilter.Op.ValueType  # 4
    OP_EQUALS: ComparisonFilter.Op.ValueType  # 5
    OP_NOT_EQUALS: ComparisonFilter.Op.ValueType  # 6
    OP_LIKE: ComparisonFilter.Op.ValueType  # 7
    """string only"""
    OP_NOT_LIKE: ComparisonFilter.Op.ValueType  # 8
    """string only"""

    KEY_FIELD_NUMBER: builtins.int
    OP_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    op: global___ComparisonFilter.Op.ValueType
    @property
    def key(self) -> sentry_protos.snuba.v1alpha.trace_item_attribute_pb2.AttributeKey: ...
    @property
    def value(self) -> sentry_protos.snuba.v1alpha.trace_item_attribute_pb2.AttributeValue: ...
    def __init__(
        self,
        *,
        key: sentry_protos.snuba.v1alpha.trace_item_attribute_pb2.AttributeKey | None = ...,
        op: global___ComparisonFilter.Op.ValueType = ...,
        value: sentry_protos.snuba.v1alpha.trace_item_attribute_pb2.AttributeValue | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["key", b"key", "op", b"op", "value", b"value"]) -> None: ...

global___ComparisonFilter = ComparisonFilter

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

    KEY_FIELD_NUMBER: builtins.int
    @property
    def key(self) -> sentry_protos.snuba.v1alpha.trace_item_attribute_pb2.AttributeKey: ...
    def __init__(
        self,
        *,
        key: sentry_protos.snuba.v1alpha.trace_item_attribute_pb2.AttributeKey | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["key", b"key"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["key", b"key"]) -> None: ...

global___ExistsFilter = ExistsFilter

@typing.final
class TraceItemFilter(google.protobuf.message.Message):
    """Represents a condition on searching for a particular "trace item"
    (e.g., spans, replays, errors)
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    AND_FILTER_FIELD_NUMBER: builtins.int
    OR_FILTER_FIELD_NUMBER: builtins.int
    COMPARISON_FILTER_FIELD_NUMBER: builtins.int
    EXISTS_FILTER_FIELD_NUMBER: builtins.int
    @property
    def and_filter(self) -> global___AndFilter: ...
    @property
    def or_filter(self) -> global___OrFilter: ...
    @property
    def comparison_filter(self) -> global___ComparisonFilter: ...
    @property
    def exists_filter(self) -> global___ExistsFilter: ...
    def __init__(
        self,
        *,
        and_filter: global___AndFilter | None = ...,
        or_filter: global___OrFilter | None = ...,
        comparison_filter: global___ComparisonFilter | None = ...,
        exists_filter: global___ExistsFilter | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["and_filter", b"and_filter", "comparison_filter", b"comparison_filter", "exists_filter", b"exists_filter", "or_filter", b"or_filter", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["and_filter", b"and_filter", "comparison_filter", b"comparison_filter", "exists_filter", b"exists_filter", "or_filter", b"or_filter", "value", b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["and_filter", "or_filter", "comparison_filter", "exists_filter"] | None: ...

global___TraceItemFilter = TraceItemFilter
