"""
@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 google.protobuf.timestamp_pb2
import sys

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    IS_SET_FIELD_NUMBER: builtins.int
    BYTES_VAL_FIELD_NUMBER: builtins.int
    STRING_VAL_FIELD_NUMBER: builtins.int
    INT32_VAL_FIELD_NUMBER: builtins.int
    INT64_VAL_FIELD_NUMBER: builtins.int
    DOUBLE_VAL_FIELD_NUMBER: builtins.int
    FLOAT_VAL_FIELD_NUMBER: builtins.int
    BOOL_VAL_FIELD_NUMBER: builtins.int
    TIMESTAMP_VAL_FIELD_NUMBER: builtins.int
    ARRAY_VAL_FIELD_NUMBER: builtins.int
    is_set: builtins.bool
    """indicates whether a value is actually present OR null.
    without this flag we can't represent a null integer/ null item in an array etc.

    to set a null value for some type, set the "val" oneof to that type (the value
    itself doesn't matter in that case) and is_set to False.
    to set a non-null value, set the value (with the type), set is_set to True.
    """
    bytes_val: builtins.bytes
    string_val: builtins.str
    int32_val: builtins.int
    int64_val: builtins.int
    double_val: builtins.float
    float_val: builtins.float
    bool_val: builtins.bool
    @property
    def timestamp_val(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def array_val(self) -> global___ArrayV1: ...
    def __init__(
        self,
        *,
        is_set: builtins.bool = ...,
        bytes_val: builtins.bytes = ...,
        string_val: builtins.str = ...,
        int32_val: builtins.int = ...,
        int64_val: builtins.int = ...,
        double_val: builtins.float = ...,
        float_val: builtins.float = ...,
        bool_val: builtins.bool = ...,
        timestamp_val: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        array_val: global___ArrayV1 | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["array_val", b"array_val", "bool_val", b"bool_val", "bytes_val", b"bytes_val", "double_val", b"double_val", "float_val", b"float_val", "int32_val", b"int32_val", "int64_val", b"int64_val", "string_val", b"string_val", "timestamp_val", b"timestamp_val", "val", b"val"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["array_val", b"array_val", "bool_val", b"bool_val", "bytes_val", b"bytes_val", "double_val", b"double_val", "float_val", b"float_val", "int32_val", b"int32_val", "int64_val", b"int64_val", "is_set", b"is_set", "string_val", b"string_val", "timestamp_val", b"timestamp_val", "val", b"val"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["val", b"val"]) -> typing_extensions.Literal["bytes_val", "string_val", "int32_val", "int64_val", "double_val", "float_val", "bool_val", "timestamp_val", "array_val"] | None: ...

global___ValueV1 = ValueV1

class ArrayV1(google.protobuf.message.Message):
    """Note: this way of representing Arrays is a bit permissive -
    one can set an array where each cell has a different type.
    as a result, do not assume this array is necessarily valid, and add
    validation checks if necessary.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___ArrayV1 = ArrayV1
