"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
SPDX-License-Identifier: Apache-2.0"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.empty_pb2
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 Type(google.protobuf.message.Message):
    """Note: type_variation_reference fields within Type messages reference a
    type_variation_anchor defined in the plan's extension declarations.

    The value 0 represents the system-preferred variation and is a valid reference value.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _NullabilityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Type._Nullability.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        NULLABILITY_UNSPECIFIED: Type._Nullability.ValueType  # 0
        NULLABILITY_NULLABLE: Type._Nullability.ValueType  # 1
        NULLABILITY_REQUIRED: Type._Nullability.ValueType  # 2

    class Nullability(_Nullability, metaclass=_NullabilityEnumTypeWrapper): ...
    NULLABILITY_UNSPECIFIED: Type.Nullability.ValueType  # 0
    NULLABILITY_NULLABLE: Type.Nullability.ValueType  # 1
    NULLABILITY_REQUIRED: Type.Nullability.ValueType  # 2

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

    @typing.final
    class IntervalYear(google.protobuf.message.Message):
        """An interval consisting of years and months"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

    @typing.final
    class IntervalDay(google.protobuf.message.Message):
        """An interval consisting of days, seconds, and microseconds"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        PRECISION_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        precision: builtins.int
        """Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, etc.
        if unset, treat as 6.
        """
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
            precision: builtins.int | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["_precision", b"_precision", "precision", b"precision"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["_precision", b"_precision", "nullability", b"nullability", "precision", b"precision", "type_variation_reference", b"type_variation_reference"]) -> None: ...
        def WhichOneof(self, oneof_group: typing.Literal["_precision", b"_precision"]) -> typing.Literal["precision"] | None: ...

    @typing.final
    class IntervalCompound(google.protobuf.message.Message):
        """An interval consisting of the components of both IntervalYear and IntervalDay"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        PRECISION_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        precision: builtins.int
        """Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, etc."""
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
            precision: builtins.int = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "precision", b"precision", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

    @typing.final
    class FixedChar(google.protobuf.message.Message):
        """Start compound types."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        LENGTH_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        length: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            length: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["length", b"length", "nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        LENGTH_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        length: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            length: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["length", b"length", "nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        LENGTH_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        length: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            length: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["length", b"length", "nullability", b"nullability", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        SCALE_FIELD_NUMBER: builtins.int
        PRECISION_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        scale: builtins.int
        precision: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            scale: builtins.int = ...,
            precision: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "precision", b"precision", "scale", b"scale", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        PRECISION_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        precision: builtins.int
        """Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, 12 is picoseconds"""
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            precision: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "precision", b"precision", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        PRECISION_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        precision: builtins.int
        """Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, 12 is picoseconds"""
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            precision: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "precision", b"precision", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        PRECISION_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        precision: builtins.int
        """Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, 12 is picoseconds"""
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        def __init__(
            self,
            *,
            precision: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "precision", b"precision", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        TYPES_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        @property
        def types(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Type]: ...
        def __init__(
            self,
            *,
            types: collections.abc.Iterable[Global___Type] | None = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_variation_reference", b"type_variation_reference", "types", b"types"]) -> None: ...

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

        TYPE_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        @property
        def type(self) -> Global___Type: ...
        def __init__(
            self,
            *,
            type: Global___Type | None = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["type", b"type"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type", b"type", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        @property
        def key(self) -> Global___Type: ...
        @property
        def value(self) -> Global___Type: ...
        def __init__(
            self,
            *,
            key: Global___Type | None = ...,
            value: Global___Type | None = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> 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", "nullability", b"nullability", "type_variation_reference", b"type_variation_reference", "value", b"value"]) -> None: ...

    @typing.final
    class Func(google.protobuf.message.Message):
        """A function type for higher-order functions.
        Represents a function that takes parameters of specified types and
        returns a value of a specified type.
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        PARAMETER_TYPES_FIELD_NUMBER: builtins.int
        RETURN_TYPE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        nullability: Global___Type.Nullability.ValueType
        """Nullability of the function value itself, not its return type.
        A nullable function type (e.g., func?<i32 -> i32>) means the function
        reference may be null. This is distinct from the return type's
        nullability (e.g., func<i32 -> i32?> where the function always exists
        but may return null).
        """
        @property
        def parameter_types(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Type]:
            """Types of parameters this function type accepts."""

        @property
        def return_type(self) -> Global___Type:
            """Return type of the function."""

        def __init__(
            self,
            *,
            parameter_types: collections.abc.Iterable[Global___Type] | None = ...,
            return_type: Global___Type | None = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["return_type", b"return_type"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "parameter_types", b"parameter_types", "return_type", b"return_type"]) -> None: ...

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

        TYPE_REFERENCE_FIELD_NUMBER: builtins.int
        TYPE_VARIATION_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        TYPE_PARAMETERS_FIELD_NUMBER: builtins.int
        type_reference: builtins.int
        """References a type_anchor defined in the plan's extension declarations."""
        type_variation_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        @property
        def type_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Type.Parameter]: ...
        def __init__(
            self,
            *,
            type_reference: builtins.int = ...,
            type_variation_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
            type_parameters: collections.abc.Iterable[Global___Type.Parameter] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_parameters", b"type_parameters", "type_reference", b"type_reference", "type_variation_reference", b"type_variation_reference"]) -> None: ...

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

        NULL_FIELD_NUMBER: builtins.int
        DATA_TYPE_FIELD_NUMBER: builtins.int
        BOOLEAN_FIELD_NUMBER: builtins.int
        INTEGER_FIELD_NUMBER: builtins.int
        ENUM_FIELD_NUMBER: builtins.int
        STRING_FIELD_NUMBER: builtins.int
        boolean: builtins.bool
        """Value parameters, like the 10 in VARCHAR<10>."""
        integer: builtins.int
        enum: builtins.str
        string: builtins.str
        @property
        def null(self) -> google.protobuf.empty_pb2.Empty:
            """Explicitly null/unspecified parameter, to select the default value (if
            any).
            """

        @property
        def data_type(self) -> Global___Type:
            """Data type parameters, like the i32 in LIST<i32>."""

        def __init__(
            self,
            *,
            null: google.protobuf.empty_pb2.Empty | None = ...,
            data_type: Global___Type | None = ...,
            boolean: builtins.bool = ...,
            integer: builtins.int = ...,
            enum: builtins.str = ...,
            string: builtins.str = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["boolean", b"boolean", "data_type", b"data_type", "enum", b"enum", "integer", b"integer", "null", b"null", "parameter", b"parameter", "string", b"string"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["boolean", b"boolean", "data_type", b"data_type", "enum", b"enum", "integer", b"integer", "null", b"null", "parameter", b"parameter", "string", b"string"]) -> None: ...
        def WhichOneof(self, oneof_group: typing.Literal["parameter", b"parameter"]) -> typing.Literal["null", "data_type", "boolean", "integer", "enum", "string"] | None: ...

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

        TYPE_ALIAS_REFERENCE_FIELD_NUMBER: builtins.int
        NULLABILITY_FIELD_NUMBER: builtins.int
        type_alias_reference: builtins.int
        nullability: Global___Type.Nullability.ValueType
        """Nullability of the referenced type alias. Must be specified."""
        def __init__(
            self,
            *,
            type_alias_reference: builtins.int = ...,
            nullability: Global___Type.Nullability.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "type_alias_reference", b"type_alias_reference"]) -> None: ...

    BOOL_FIELD_NUMBER: builtins.int
    I8_FIELD_NUMBER: builtins.int
    I16_FIELD_NUMBER: builtins.int
    I32_FIELD_NUMBER: builtins.int
    I64_FIELD_NUMBER: builtins.int
    FP32_FIELD_NUMBER: builtins.int
    FP64_FIELD_NUMBER: builtins.int
    STRING_FIELD_NUMBER: builtins.int
    BINARY_FIELD_NUMBER: builtins.int
    TIMESTAMP_FIELD_NUMBER: builtins.int
    DATE_FIELD_NUMBER: builtins.int
    TIME_FIELD_NUMBER: builtins.int
    INTERVAL_YEAR_FIELD_NUMBER: builtins.int
    INTERVAL_DAY_FIELD_NUMBER: builtins.int
    INTERVAL_COMPOUND_FIELD_NUMBER: builtins.int
    TIMESTAMP_TZ_FIELD_NUMBER: builtins.int
    UUID_FIELD_NUMBER: builtins.int
    FIXED_CHAR_FIELD_NUMBER: builtins.int
    VARCHAR_FIELD_NUMBER: builtins.int
    FIXED_BINARY_FIELD_NUMBER: builtins.int
    DECIMAL_FIELD_NUMBER: builtins.int
    PRECISION_TIME_FIELD_NUMBER: builtins.int
    PRECISION_TIMESTAMP_FIELD_NUMBER: builtins.int
    PRECISION_TIMESTAMP_TZ_FIELD_NUMBER: builtins.int
    STRUCT_FIELD_NUMBER: builtins.int
    LIST_FIELD_NUMBER: builtins.int
    MAP_FIELD_NUMBER: builtins.int
    FUNC_FIELD_NUMBER: builtins.int
    USER_DEFINED_FIELD_NUMBER: builtins.int
    USER_DEFINED_TYPE_REFERENCE_FIELD_NUMBER: builtins.int
    ALIAS_FIELD_NUMBER: builtins.int
    user_defined_type_reference: builtins.int
    """Deprecated in favor of user_defined, which allows nullability and
    variations to be specified. If user_defined_type_reference is
    encountered, treat it as being non-nullable and having the default
    variation.
    """
    @property
    def bool(self) -> Global___Type.Boolean: ...
    @property
    def i8(self) -> Global___Type.I8: ...
    @property
    def i16(self) -> Global___Type.I16: ...
    @property
    def i32(self) -> Global___Type.I32: ...
    @property
    def i64(self) -> Global___Type.I64: ...
    @property
    def fp32(self) -> Global___Type.FP32: ...
    @property
    def fp64(self) -> Global___Type.FP64: ...
    @property
    def string(self) -> Global___Type.String: ...
    @property
    def binary(self) -> Global___Type.Binary: ...
    @property
    def timestamp(self) -> Global___Type.Timestamp:
        """Deprecated in favor of `PrecisionTimestamp precision_timestamp`"""

    @property
    def date(self) -> Global___Type.Date: ...
    @property
    def time(self) -> Global___Type.Time:
        """Deprecated in favor of `PrecisionTime precision_time`"""

    @property
    def interval_year(self) -> Global___Type.IntervalYear: ...
    @property
    def interval_day(self) -> Global___Type.IntervalDay: ...
    @property
    def interval_compound(self) -> Global___Type.IntervalCompound: ...
    @property
    def timestamp_tz(self) -> Global___Type.TimestampTZ:
        """Deprecated in favor of `PrecisionTimestampTZ precision_timestamp_tz`"""

    @property
    def uuid(self) -> Global___Type.UUID: ...
    @property
    def fixed_char(self) -> Global___Type.FixedChar: ...
    @property
    def varchar(self) -> Global___Type.VarChar: ...
    @property
    def fixed_binary(self) -> Global___Type.FixedBinary: ...
    @property
    def decimal(self) -> Global___Type.Decimal: ...
    @property
    def precision_time(self) -> Global___Type.PrecisionTime: ...
    @property
    def precision_timestamp(self) -> Global___Type.PrecisionTimestamp: ...
    @property
    def precision_timestamp_tz(self) -> Global___Type.PrecisionTimestampTZ:
        """value is since UNIX epoch in UTC"""

    @property
    def struct(self) -> Global___Type.Struct: ...
    @property
    def list(self) -> Global___Type.List: ...
    @property
    def map(self) -> Global___Type.Map: ...
    @property
    def func(self) -> Global___Type.Func: ...
    @property
    def user_defined(self) -> Global___Type.UserDefined: ...
    @property
    def alias(self) -> Global___Type.TypeAliasReference:
        """Reference an aliased type in `Plan.type_aliases`."""

    def __init__(
        self,
        *,
        bool: Global___Type.Boolean | None = ...,
        i8: Global___Type.I8 | None = ...,
        i16: Global___Type.I16 | None = ...,
        i32: Global___Type.I32 | None = ...,
        i64: Global___Type.I64 | None = ...,
        fp32: Global___Type.FP32 | None = ...,
        fp64: Global___Type.FP64 | None = ...,
        string: Global___Type.String | None = ...,
        binary: Global___Type.Binary | None = ...,
        timestamp: Global___Type.Timestamp | None = ...,
        date: Global___Type.Date | None = ...,
        time: Global___Type.Time | None = ...,
        interval_year: Global___Type.IntervalYear | None = ...,
        interval_day: Global___Type.IntervalDay | None = ...,
        interval_compound: Global___Type.IntervalCompound | None = ...,
        timestamp_tz: Global___Type.TimestampTZ | None = ...,
        uuid: Global___Type.UUID | None = ...,
        fixed_char: Global___Type.FixedChar | None = ...,
        varchar: Global___Type.VarChar | None = ...,
        fixed_binary: Global___Type.FixedBinary | None = ...,
        decimal: Global___Type.Decimal | None = ...,
        precision_time: Global___Type.PrecisionTime | None = ...,
        precision_timestamp: Global___Type.PrecisionTimestamp | None = ...,
        precision_timestamp_tz: Global___Type.PrecisionTimestampTZ | None = ...,
        struct: Global___Type.Struct | None = ...,
        list: Global___Type.List | None = ...,
        map: Global___Type.Map | None = ...,
        func: Global___Type.Func | None = ...,
        user_defined: Global___Type.UserDefined | None = ...,
        user_defined_type_reference: builtins.int = ...,
        alias: Global___Type.TypeAliasReference | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["alias", b"alias", "binary", b"binary", "bool", b"bool", "date", b"date", "decimal", b"decimal", "fixed_binary", b"fixed_binary", "fixed_char", b"fixed_char", "fp32", b"fp32", "fp64", b"fp64", "func", b"func", "i16", b"i16", "i32", b"i32", "i64", b"i64", "i8", b"i8", "interval_compound", b"interval_compound", "interval_day", b"interval_day", "interval_year", b"interval_year", "kind", b"kind", "list", b"list", "map", b"map", "precision_time", b"precision_time", "precision_timestamp", b"precision_timestamp", "precision_timestamp_tz", b"precision_timestamp_tz", "string", b"string", "struct", b"struct", "time", b"time", "timestamp", b"timestamp", "timestamp_tz", b"timestamp_tz", "user_defined", b"user_defined", "user_defined_type_reference", b"user_defined_type_reference", "uuid", b"uuid", "varchar", b"varchar"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["alias", b"alias", "binary", b"binary", "bool", b"bool", "date", b"date", "decimal", b"decimal", "fixed_binary", b"fixed_binary", "fixed_char", b"fixed_char", "fp32", b"fp32", "fp64", b"fp64", "func", b"func", "i16", b"i16", "i32", b"i32", "i64", b"i64", "i8", b"i8", "interval_compound", b"interval_compound", "interval_day", b"interval_day", "interval_year", b"interval_year", "kind", b"kind", "list", b"list", "map", b"map", "precision_time", b"precision_time", "precision_timestamp", b"precision_timestamp", "precision_timestamp_tz", b"precision_timestamp_tz", "string", b"string", "struct", b"struct", "time", b"time", "timestamp", b"timestamp", "timestamp_tz", b"timestamp_tz", "user_defined", b"user_defined", "user_defined_type_reference", b"user_defined_type_reference", "uuid", b"uuid", "varchar", b"varchar"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["kind", b"kind"]) -> typing.Literal["bool", "i8", "i16", "i32", "i64", "fp32", "fp64", "string", "binary", "timestamp", "date", "time", "interval_year", "interval_day", "interval_compound", "timestamp_tz", "uuid", "fixed_char", "varchar", "fixed_binary", "decimal", "precision_time", "precision_timestamp", "precision_timestamp_tz", "struct", "list", "map", "func", "user_defined", "user_defined_type_reference", "alias"] | None: ...

Global___Type: typing_extensions.TypeAlias = Type

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

    TYPE_ALIAS_ANCHOR_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    type_alias_anchor: builtins.int
    """A surrogate key used in the context of a single plan to reference a
    specific type alias.
    0 is a valid anchor/reference, but prefer non-zero values for ergonomics.
    """
    @property
    def type(self) -> Global___Type:
        """A concrete type to be aliased.

        * All type parameters must be specified.
        * Cannot directly be another alias.
        * Type parameters can reference other aliased types as long as no circular dependencies are introduced.
        * Nullability of aliased type is **ignored**. Nullability must be specified when the aliased type is referenced.
        * Type variation may be specified in the aliased type.
        """

    def __init__(
        self,
        *,
        type_alias_anchor: builtins.int = ...,
        type: Global___Type | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["type", b"type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["type", b"type", "type_alias_anchor", b"type_alias_anchor"]) -> None: ...

Global___TypeAlias: typing_extensions.TypeAlias = TypeAlias

@typing.final
class NamedStruct(google.protobuf.message.Message):
    """A message for modeling name/type pairs.

    Useful for representing relation schemas.

    Notes:

    * The names field is in depth-first order.

    For example a schema such as:

    a: int64
    b: struct<c: float32, d: string>

    would have a `names` field that looks like:

    ["a", "b", "c", "d"]

    * Only struct fields are contained in this field's elements,
    * Map keys should be traversed first, then values when producing/consuming
    * When used to represent a relation schema, the outermost struct's
      nullability should be NULLABILITY_REQUIRED.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAMES_FIELD_NUMBER: builtins.int
    STRUCT_FIELD_NUMBER: builtins.int
    @property
    def names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """list of names in dfs order"""

    @property
    def struct(self) -> Global___Type.Struct: ...
    def __init__(
        self,
        *,
        names: collections.abc.Iterable[builtins.str] | None = ...,
        struct: Global___Type.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["struct", b"struct"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["names", b"names", "struct", b"struct"]) -> None: ...

Global___NamedStruct: typing_extensions.TypeAlias = NamedStruct
