"""
@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

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

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

    class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AttributeKey._Type.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        TYPE_UNSPECIFIED: AttributeKey._Type.ValueType  # 0
        """called "none" sometimes"""
        TYPE_BOOLEAN: AttributeKey._Type.ValueType  # 1
        TYPE_STRING: AttributeKey._Type.ValueType  # 2
        TYPE_FLOAT: AttributeKey._Type.ValueType  # 3
        TYPE_INT: AttributeKey._Type.ValueType  # 4
        """note: all numbers are stored as float64, so massive integers can be rounded. USE STRING FOR IDS."""

    class Type(_Type, metaclass=_TypeEnumTypeWrapper):
        """this mostly reflects what types are able to be ingested, see eap_spans consumer for ingest details"""

    TYPE_UNSPECIFIED: AttributeKey.Type.ValueType  # 0
    """called "none" sometimes"""
    TYPE_BOOLEAN: AttributeKey.Type.ValueType  # 1
    TYPE_STRING: AttributeKey.Type.ValueType  # 2
    TYPE_FLOAT: AttributeKey.Type.ValueType  # 3
    TYPE_INT: AttributeKey.Type.ValueType  # 4
    """note: all numbers are stored as float64, so massive integers can be rounded. USE STRING FOR IDS."""

    TYPE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    type: global___AttributeKey.Type.ValueType
    name: builtins.str
    """if you use span_id this will route to span.span_id,
    if you use derp this will route to attr_{str,num}_{n}['derp']
    """
    def __init__(
        self,
        *,
        type: global___AttributeKey.Type.ValueType = ...,
        name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["name", b"name", "type", b"type"]) -> None: ...

global___AttributeKey = AttributeKey

@typing.final
class VirtualColumnContext(google.protobuf.message.Message):
    """custom mappings of column values which are not present in EAP storage
    for example, project name is changeable by the user and not stored in EAP
    but sorting by the project name may be desired. This struct carries that mapping
    data
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    FROM_COLUMN_NAME_FIELD_NUMBER: builtins.int
    TO_COLUMN_NAME_FIELD_NUMBER: builtins.int
    VALUE_MAP_FIELD_NUMBER: builtins.int
    from_column_name: builtins.str
    to_column_name: builtins.str
    @property
    def value_map(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
    def __init__(
        self,
        *,
        from_column_name: builtins.str = ...,
        to_column_name: builtins.str = ...,
        value_map: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["from_column_name", b"from_column_name", "to_column_name", b"to_column_name", "value_map", b"value_map"]) -> None: ...

global___VirtualColumnContext = VirtualColumnContext

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

    VAL_BOOL_FIELD_NUMBER: builtins.int
    VAL_STR_FIELD_NUMBER: builtins.int
    VAL_FLOAT_FIELD_NUMBER: builtins.int
    VAL_INT_FIELD_NUMBER: builtins.int
    val_bool: builtins.bool
    val_str: builtins.str
    val_float: builtins.float
    val_int: builtins.int
    def __init__(
        self,
        *,
        val_bool: builtins.bool = ...,
        val_str: builtins.str = ...,
        val_float: builtins.float = ...,
        val_int: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["val_bool", b"val_bool", "val_float", b"val_float", "val_int", b"val_int", "val_str", b"val_str", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["val_bool", b"val_bool", "val_float", b"val_float", "val_int", b"val_int", "val_str", b"val_str", "value", b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["val_bool", "val_str", "val_float", "val_int"] | None: ...

global___AttributeValue = AttributeValue
