"""
@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.message
import sentry_protos.snuba.v1.request_common_pb2
import sentry_protos.snuba.v1.trace_item_attribute_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class TraceItemAttributeNamesRequest(google.protobuf.message.Message):
    """TraceItemAttributeNamesRequest represents a request for "which queryable attributes are available for these projects between these dates"
    - used for things like autocompletion
    EAP does not make a distinction between data stored as columns on a table vs attributes stored
    dynamically (e.g. tags, contexts, etc). To the user of the interface, they are the same
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    META_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    VALUE_SUBSTRING_MATCH_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    limit: builtins.int
    offset: builtins.int
    """use `page_token` instead"""
    type: sentry_protos.snuba.v1.trace_item_attribute_pb2.AttributeKey.Type.ValueType
    """different typed attributes are queried separately
    anything other than TYPE_STRING and TYPE_FLOAT will return empty
    """
    value_substring_match: builtins.str
    """filter to only return attribute names that match the given substring"""
    @property
    def meta(self) -> sentry_protos.snuba.v1.request_common_pb2.RequestMeta: ...
    @property
    def page_token(self) -> sentry_protos.snuba.v1.request_common_pb2.PageToken:
        """optional, used for pagination, the next page token will be returned in the last response"""

    def __init__(
        self,
        *,
        meta: sentry_protos.snuba.v1.request_common_pb2.RequestMeta | None = ...,
        limit: builtins.int = ...,
        offset: builtins.int = ...,
        type: sentry_protos.snuba.v1.trace_item_attribute_pb2.AttributeKey.Type.ValueType = ...,
        value_substring_match: builtins.str = ...,
        page_token: sentry_protos.snuba.v1.request_common_pb2.PageToken | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["meta", b"meta", "page_token", b"page_token"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["limit", b"limit", "meta", b"meta", "offset", b"offset", "page_token", b"page_token", "type", b"type", "value_substring_match", b"value_substring_match"]) -> None: ...

global___TraceItemAttributeNamesRequest = TraceItemAttributeNamesRequest

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

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

        NAME_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        name: builtins.str
        type: sentry_protos.snuba.v1.trace_item_attribute_pb2.AttributeKey.Type.ValueType
        def __init__(
            self,
            *,
            name: builtins.str = ...,
            type: sentry_protos.snuba.v1.trace_item_attribute_pb2.AttributeKey.Type.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["name", b"name", "type", b"type"]) -> None: ...

    ATTRIBUTES_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    META_FIELD_NUMBER: builtins.int
    @property
    def attributes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TraceItemAttributeNamesResponse.Attribute]: ...
    @property
    def page_token(self) -> sentry_protos.snuba.v1.request_common_pb2.PageToken:
        """page token for the next page of results"""

    @property
    def meta(self) -> sentry_protos.snuba.v1.request_common_pb2.ResponseMeta: ...
    def __init__(
        self,
        *,
        attributes: collections.abc.Iterable[global___TraceItemAttributeNamesResponse.Attribute] | None = ...,
        page_token: sentry_protos.snuba.v1.request_common_pb2.PageToken | None = ...,
        meta: sentry_protos.snuba.v1.request_common_pb2.ResponseMeta | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["meta", b"meta", "page_token", b"page_token"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["attributes", b"attributes", "meta", b"meta", "page_token", b"page_token"]) -> None: ...

global___TraceItemAttributeNamesResponse = TraceItemAttributeNamesResponse

@typing.final
class TraceItemAttributeValuesRequest(google.protobuf.message.Message):
    """This endpoint only supports string values, it does not make sense
    to get all the possible values of a numerical attribute
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    META_FIELD_NUMBER: builtins.int
    KEY_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    VALUE_SUBSTRING_MATCH_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    name: builtins.str
    """ use the `key` field instead, for API consistency"""
    value_substring_match: builtins.str
    """a substring of the value being searched,
    only strict substring supported, no regex
    """
    limit: builtins.int
    @property
    def meta(self) -> sentry_protos.snuba.v1.request_common_pb2.RequestMeta: ...
    @property
    def key(self) -> sentry_protos.snuba.v1.trace_item_attribute_pb2.AttributeKey: ...
    @property
    def page_token(self) -> sentry_protos.snuba.v1.request_common_pb2.PageToken: ...
    def __init__(
        self,
        *,
        meta: sentry_protos.snuba.v1.request_common_pb2.RequestMeta | None = ...,
        key: sentry_protos.snuba.v1.trace_item_attribute_pb2.AttributeKey | None = ...,
        name: builtins.str = ...,
        value_substring_match: builtins.str = ...,
        limit: builtins.int = ...,
        page_token: sentry_protos.snuba.v1.request_common_pb2.PageToken | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["key", b"key", "meta", b"meta", "page_token", b"page_token"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["key", b"key", "limit", b"limit", "meta", b"meta", "name", b"name", "page_token", b"page_token", "value_substring_match", b"value_substring_match"]) -> None: ...

global___TraceItemAttributeValuesRequest = TraceItemAttributeValuesRequest

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

    VALUES_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    META_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def page_token(self) -> sentry_protos.snuba.v1.request_common_pb2.PageToken: ...
    @property
    def meta(self) -> sentry_protos.snuba.v1.request_common_pb2.ResponseMeta: ...
    def __init__(
        self,
        *,
        values: collections.abc.Iterable[builtins.str] | None = ...,
        page_token: sentry_protos.snuba.v1.request_common_pb2.PageToken | None = ...,
        meta: sentry_protos.snuba.v1.request_common_pb2.ResponseMeta | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["meta", b"meta", "page_token", b"page_token"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["meta", b"meta", "page_token", b"page_token", "values", b"values"]) -> None: ...

global___TraceItemAttributeValuesResponse = TraceItemAttributeValuesResponse
