"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
This file is copied and modified from https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/common/v1/common.proto
Modifications:
 - Removal of unneeded InstrumentationLibrary and StringKeyValue messages.
 - Change of go_package to reference a package in this repo.
 - Removal of gogoproto usage.
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import sys

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class AnyValue(google.protobuf.message.Message):
    """AnyValue is used to represent any type of attribute value. AnyValue may contain a
    primitive value such as a string or integer or it may contain an arbitrary nested
    object containing arrays, key-value lists and primitives.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    STRING_VALUE_FIELD_NUMBER: builtins.int
    BOOL_VALUE_FIELD_NUMBER: builtins.int
    INT_VALUE_FIELD_NUMBER: builtins.int
    DOUBLE_VALUE_FIELD_NUMBER: builtins.int
    ARRAY_VALUE_FIELD_NUMBER: builtins.int
    KVLIST_VALUE_FIELD_NUMBER: builtins.int
    BYTES_VALUE_FIELD_NUMBER: builtins.int
    string_value: builtins.str
    bool_value: builtins.bool
    int_value: builtins.int
    double_value: builtins.float
    @property
    def array_value(self) -> global___ArrayValue: ...
    @property
    def kvlist_value(self) -> global___KeyValueList: ...
    bytes_value: builtins.bytes
    def __init__(
        self,
        *,
        string_value: builtins.str = ...,
        bool_value: builtins.bool = ...,
        int_value: builtins.int = ...,
        double_value: builtins.float = ...,
        array_value: global___ArrayValue | None = ...,
        kvlist_value: global___KeyValueList | None = ...,
        bytes_value: builtins.bytes = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["array_value", b"array_value", "bool_value", b"bool_value", "bytes_value", b"bytes_value", "double_value", b"double_value", "int_value", b"int_value", "kvlist_value", b"kvlist_value", "string_value", b"string_value", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["array_value", b"array_value", "bool_value", b"bool_value", "bytes_value", b"bytes_value", "double_value", b"double_value", "int_value", b"int_value", "kvlist_value", b"kvlist_value", "string_value", b"string_value", "value", b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["string_value", "bool_value", "int_value", "double_value", "array_value", "kvlist_value", "bytes_value"] | None: ...

global___AnyValue = AnyValue

@typing_extensions.final
class ArrayValue(google.protobuf.message.Message):
    """ArrayValue is a list of AnyValue messages. We need ArrayValue as a message
    since oneof in AnyValue does not allow repeated fields.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUES_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnyValue]:
        """Array of values. The array may be empty (contain 0 elements)."""
    def __init__(
        self,
        *,
        values: collections.abc.Iterable[global___AnyValue] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["values", b"values"]) -> None: ...

global___ArrayValue = ArrayValue

@typing_extensions.final
class KeyValueList(google.protobuf.message.Message):
    """KeyValueList is a list of KeyValue messages. We need KeyValueList as a message
    since `oneof` in AnyValue does not allow repeated fields. Everywhere else where we need
    a list of KeyValue messages (e.g. in Span) we use `repeated KeyValue` directly to
    avoid unnecessary extra wrapping (which slows down the protocol). The 2 approaches
    are semantically equivalent.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUES_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___KeyValue]:
        """A collection of key/value pairs of key-value pairs. The list may be empty (may
        contain 0 elements).
        """
    def __init__(
        self,
        *,
        values: collections.abc.Iterable[global___KeyValue] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["values", b"values"]) -> None: ...

global___KeyValueList = KeyValueList

@typing_extensions.final
class KeyValue(google.protobuf.message.Message):
    """KeyValue is a key-value pair that is used to store Span attributes, Link
    attributes, etc.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEY_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    key: builtins.str
    @property
    def value(self) -> global___AnyValue: ...
    def __init__(
        self,
        *,
        key: builtins.str = ...,
        value: global___AnyValue | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

global___KeyValue = KeyValue
