"""
@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.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import substrait.parameterized_types_pb2
import substrait.type_expressions_pb2
import substrait.type_pb2
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 FunctionSignature(google.protobuf.message.Message):
    """List of function signatures available."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

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

        class _ParameterConsistencyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[FunctionSignature.FinalArgVariadic._ParameterConsistency.ValueType], builtins.type):
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
            PARAMETER_CONSISTENCY_UNSPECIFIED: FunctionSignature.FinalArgVariadic._ParameterConsistency.ValueType  # 0
            PARAMETER_CONSISTENCY_CONSISTENT: FunctionSignature.FinalArgVariadic._ParameterConsistency.ValueType  # 1
            """All argument must be the same concrete type."""
            PARAMETER_CONSISTENCY_INCONSISTENT: FunctionSignature.FinalArgVariadic._ParameterConsistency.ValueType  # 2
            """Each argument can be any possible concrete type afforded by the bounds
            of any parameter defined in the arguments specification.
            """

        class ParameterConsistency(_ParameterConsistency, metaclass=_ParameterConsistencyEnumTypeWrapper): ...
        PARAMETER_CONSISTENCY_UNSPECIFIED: FunctionSignature.FinalArgVariadic.ParameterConsistency.ValueType  # 0
        PARAMETER_CONSISTENCY_CONSISTENT: FunctionSignature.FinalArgVariadic.ParameterConsistency.ValueType  # 1
        """All argument must be the same concrete type."""
        PARAMETER_CONSISTENCY_INCONSISTENT: FunctionSignature.FinalArgVariadic.ParameterConsistency.ValueType  # 2
        """Each argument can be any possible concrete type afforded by the bounds
        of any parameter defined in the arguments specification.
        """

        MIN_ARGS_FIELD_NUMBER: builtins.int
        MAX_ARGS_FIELD_NUMBER: builtins.int
        CONSISTENCY_FIELD_NUMBER: builtins.int
        min_args: builtins.int
        """the minimum number of arguments allowed for the list of final arguments
        (inclusive).
        """
        max_args: builtins.int
        """the maximum number of arguments allowed for the list of final arguments
        (exclusive)
        """
        consistency: Global___FunctionSignature.FinalArgVariadic.ParameterConsistency.ValueType
        """the type of parameterized type consistency"""
        def __init__(
            self,
            *,
            min_args: builtins.int = ...,
            max_args: builtins.int = ...,
            consistency: Global___FunctionSignature.FinalArgVariadic.ParameterConsistency.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["consistency", b"consistency", "max_args", b"max_args", "min_args", b"min_args"]) -> None: ...

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

        def __init__(
            self,
        ) -> None: ...

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

        ARGUMENTS_FIELD_NUMBER: builtins.int
        NAME_FIELD_NUMBER: builtins.int
        DESCRIPTION_FIELD_NUMBER: builtins.int
        DETERMINISTIC_FIELD_NUMBER: builtins.int
        SESSION_DEPENDENT_FIELD_NUMBER: builtins.int
        OUTPUT_TYPE_FIELD_NUMBER: builtins.int
        VARIADIC_FIELD_NUMBER: builtins.int
        NORMAL_FIELD_NUMBER: builtins.int
        IMPLEMENTATIONS_FIELD_NUMBER: builtins.int
        deterministic: builtins.bool
        session_dependent: builtins.bool
        @property
        def arguments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FunctionSignature.Argument]: ...
        @property
        def name(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
        @property
        def description(self) -> Global___FunctionSignature.Description: ...
        @property
        def output_type(self) -> substrait.type_expressions_pb2.DerivationExpression: ...
        @property
        def variadic(self) -> Global___FunctionSignature.FinalArgVariadic: ...
        @property
        def normal(self) -> Global___FunctionSignature.FinalArgNormal: ...
        @property
        def implementations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FunctionSignature.Implementation]: ...
        def __init__(
            self,
            *,
            arguments: collections.abc.Iterable[Global___FunctionSignature.Argument] | None = ...,
            name: collections.abc.Iterable[builtins.str] | None = ...,
            description: Global___FunctionSignature.Description | None = ...,
            deterministic: builtins.bool = ...,
            session_dependent: builtins.bool = ...,
            output_type: substrait.type_expressions_pb2.DerivationExpression | None = ...,
            variadic: Global___FunctionSignature.FinalArgVariadic | None = ...,
            normal: Global___FunctionSignature.FinalArgNormal | None = ...,
            implementations: collections.abc.Iterable[Global___FunctionSignature.Implementation] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["description", b"description", "final_variable_behavior", b"final_variable_behavior", "normal", b"normal", "output_type", b"output_type", "variadic", b"variadic"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["arguments", b"arguments", "description", b"description", "deterministic", b"deterministic", "final_variable_behavior", b"final_variable_behavior", "implementations", b"implementations", "name", b"name", "normal", b"normal", "output_type", b"output_type", "session_dependent", b"session_dependent", "variadic", b"variadic"]) -> None: ...
        def WhichOneof(self, oneof_group: typing.Literal["final_variable_behavior", b"final_variable_behavior"]) -> typing.Literal["variadic", "normal"] | None: ...

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

        ARGUMENTS_FIELD_NUMBER: builtins.int
        NAME_FIELD_NUMBER: builtins.int
        DESCRIPTION_FIELD_NUMBER: builtins.int
        DETERMINISTIC_FIELD_NUMBER: builtins.int
        SESSION_DEPENDENT_FIELD_NUMBER: builtins.int
        OUTPUT_TYPE_FIELD_NUMBER: builtins.int
        VARIADIC_FIELD_NUMBER: builtins.int
        NORMAL_FIELD_NUMBER: builtins.int
        ORDERED_FIELD_NUMBER: builtins.int
        MAX_SET_FIELD_NUMBER: builtins.int
        INTERMEDIATE_TYPE_FIELD_NUMBER: builtins.int
        IMPLEMENTATIONS_FIELD_NUMBER: builtins.int
        name: builtins.str
        deterministic: builtins.bool
        session_dependent: builtins.bool
        ordered: builtins.bool
        max_set: builtins.int
        @property
        def arguments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FunctionSignature.Argument]: ...
        @property
        def description(self) -> Global___FunctionSignature.Description: ...
        @property
        def output_type(self) -> substrait.type_expressions_pb2.DerivationExpression: ...
        @property
        def variadic(self) -> Global___FunctionSignature.FinalArgVariadic: ...
        @property
        def normal(self) -> Global___FunctionSignature.FinalArgNormal: ...
        @property
        def intermediate_type(self) -> substrait.type_pb2.Type: ...
        @property
        def implementations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FunctionSignature.Implementation]: ...
        def __init__(
            self,
            *,
            arguments: collections.abc.Iterable[Global___FunctionSignature.Argument] | None = ...,
            name: builtins.str = ...,
            description: Global___FunctionSignature.Description | None = ...,
            deterministic: builtins.bool = ...,
            session_dependent: builtins.bool = ...,
            output_type: substrait.type_expressions_pb2.DerivationExpression | None = ...,
            variadic: Global___FunctionSignature.FinalArgVariadic | None = ...,
            normal: Global___FunctionSignature.FinalArgNormal | None = ...,
            ordered: builtins.bool = ...,
            max_set: builtins.int = ...,
            intermediate_type: substrait.type_pb2.Type | None = ...,
            implementations: collections.abc.Iterable[Global___FunctionSignature.Implementation] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["description", b"description", "final_variable_behavior", b"final_variable_behavior", "intermediate_type", b"intermediate_type", "normal", b"normal", "output_type", b"output_type", "variadic", b"variadic"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["arguments", b"arguments", "description", b"description", "deterministic", b"deterministic", "final_variable_behavior", b"final_variable_behavior", "implementations", b"implementations", "intermediate_type", b"intermediate_type", "max_set", b"max_set", "name", b"name", "normal", b"normal", "ordered", b"ordered", "output_type", b"output_type", "session_dependent", b"session_dependent", "variadic", b"variadic"]) -> None: ...
        def WhichOneof(self, oneof_group: typing.Literal["final_variable_behavior", b"final_variable_behavior"]) -> typing.Literal["variadic", "normal"] | None: ...

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

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

        class _WindowTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[FunctionSignature.Window._WindowType.ValueType], builtins.type):
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
            WINDOW_TYPE_UNSPECIFIED: FunctionSignature.Window._WindowType.ValueType  # 0
            WINDOW_TYPE_STREAMING: FunctionSignature.Window._WindowType.ValueType  # 1
            WINDOW_TYPE_PARTITION: FunctionSignature.Window._WindowType.ValueType  # 2

        class WindowType(_WindowType, metaclass=_WindowTypeEnumTypeWrapper): ...
        WINDOW_TYPE_UNSPECIFIED: FunctionSignature.Window.WindowType.ValueType  # 0
        WINDOW_TYPE_STREAMING: FunctionSignature.Window.WindowType.ValueType  # 1
        WINDOW_TYPE_PARTITION: FunctionSignature.Window.WindowType.ValueType  # 2

        ARGUMENTS_FIELD_NUMBER: builtins.int
        NAME_FIELD_NUMBER: builtins.int
        DESCRIPTION_FIELD_NUMBER: builtins.int
        DETERMINISTIC_FIELD_NUMBER: builtins.int
        SESSION_DEPENDENT_FIELD_NUMBER: builtins.int
        INTERMEDIATE_TYPE_FIELD_NUMBER: builtins.int
        OUTPUT_TYPE_FIELD_NUMBER: builtins.int
        VARIADIC_FIELD_NUMBER: builtins.int
        NORMAL_FIELD_NUMBER: builtins.int
        ORDERED_FIELD_NUMBER: builtins.int
        MAX_SET_FIELD_NUMBER: builtins.int
        WINDOW_TYPE_FIELD_NUMBER: builtins.int
        IMPLEMENTATIONS_FIELD_NUMBER: builtins.int
        deterministic: builtins.bool
        session_dependent: builtins.bool
        ordered: builtins.bool
        max_set: builtins.int
        window_type: Global___FunctionSignature.Window.WindowType.ValueType
        @property
        def arguments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FunctionSignature.Argument]: ...
        @property
        def name(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
        @property
        def description(self) -> Global___FunctionSignature.Description: ...
        @property
        def intermediate_type(self) -> substrait.type_expressions_pb2.DerivationExpression: ...
        @property
        def output_type(self) -> substrait.type_expressions_pb2.DerivationExpression: ...
        @property
        def variadic(self) -> Global___FunctionSignature.FinalArgVariadic: ...
        @property
        def normal(self) -> Global___FunctionSignature.FinalArgNormal: ...
        @property
        def implementations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FunctionSignature.Implementation]: ...
        def __init__(
            self,
            *,
            arguments: collections.abc.Iterable[Global___FunctionSignature.Argument] | None = ...,
            name: collections.abc.Iterable[builtins.str] | None = ...,
            description: Global___FunctionSignature.Description | None = ...,
            deterministic: builtins.bool = ...,
            session_dependent: builtins.bool = ...,
            intermediate_type: substrait.type_expressions_pb2.DerivationExpression | None = ...,
            output_type: substrait.type_expressions_pb2.DerivationExpression | None = ...,
            variadic: Global___FunctionSignature.FinalArgVariadic | None = ...,
            normal: Global___FunctionSignature.FinalArgNormal | None = ...,
            ordered: builtins.bool = ...,
            max_set: builtins.int = ...,
            window_type: Global___FunctionSignature.Window.WindowType.ValueType = ...,
            implementations: collections.abc.Iterable[Global___FunctionSignature.Implementation] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["description", b"description", "final_variable_behavior", b"final_variable_behavior", "intermediate_type", b"intermediate_type", "normal", b"normal", "output_type", b"output_type", "variadic", b"variadic"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["arguments", b"arguments", "description", b"description", "deterministic", b"deterministic", "final_variable_behavior", b"final_variable_behavior", "implementations", b"implementations", "intermediate_type", b"intermediate_type", "max_set", b"max_set", "name", b"name", "normal", b"normal", "ordered", b"ordered", "output_type", b"output_type", "session_dependent", b"session_dependent", "variadic", b"variadic", "window_type", b"window_type"]) -> None: ...
        def WhichOneof(self, oneof_group: typing.Literal["final_variable_behavior", b"final_variable_behavior"]) -> typing.Literal["variadic", "normal"] | None: ...

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

        LANGUAGE_FIELD_NUMBER: builtins.int
        BODY_FIELD_NUMBER: builtins.int
        language: builtins.str
        body: builtins.str
        def __init__(
            self,
            *,
            language: builtins.str = ...,
            body: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["body", b"body", "language", b"language"]) -> None: ...

    @typing.final
    class Implementation(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[FunctionSignature.Implementation._Type.ValueType], builtins.type):
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
            TYPE_UNSPECIFIED: FunctionSignature.Implementation._Type.ValueType  # 0
            TYPE_WEB_ASSEMBLY: FunctionSignature.Implementation._Type.ValueType  # 1
            TYPE_TRINO_JAR: FunctionSignature.Implementation._Type.ValueType  # 2

        class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
        TYPE_UNSPECIFIED: FunctionSignature.Implementation.Type.ValueType  # 0
        TYPE_WEB_ASSEMBLY: FunctionSignature.Implementation.Type.ValueType  # 1
        TYPE_TRINO_JAR: FunctionSignature.Implementation.Type.ValueType  # 2

        TYPE_FIELD_NUMBER: builtins.int
        URI_FIELD_NUMBER: builtins.int
        type: Global___FunctionSignature.Implementation.Type.ValueType
        uri: builtins.str
        def __init__(
            self,
            *,
            type: Global___FunctionSignature.Implementation.Type.ValueType = ...,
            uri: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["type", b"type", "uri", b"uri"]) -> None: ...

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

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

            TYPE_FIELD_NUMBER: builtins.int
            CONSTANT_FIELD_NUMBER: builtins.int
            constant: builtins.bool
            @property
            def type(self) -> substrait.parameterized_types_pb2.ParameterizedType: ...
            def __init__(
                self,
                *,
                type: substrait.parameterized_types_pb2.ParameterizedType | None = ...,
                constant: builtins.bool = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["type", b"type"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["constant", b"constant", "type", b"type"]) -> None: ...

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

            TYPE_FIELD_NUMBER: builtins.int
            @property
            def type(self) -> substrait.parameterized_types_pb2.ParameterizedType: ...
            def __init__(
                self,
                *,
                type: substrait.parameterized_types_pb2.ParameterizedType | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["type", b"type"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["type", b"type"]) -> None: ...

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

            OPTIONS_FIELD_NUMBER: builtins.int
            OPTIONAL_FIELD_NUMBER: builtins.int
            optional: builtins.bool
            @property
            def options(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
            def __init__(
                self,
                *,
                options: collections.abc.Iterable[builtins.str] | None = ...,
                optional: builtins.bool = ...,
            ) -> None: ...
            def ClearField(self, field_name: typing.Literal["optional", b"optional", "options", b"options"]) -> None: ...

        NAME_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        ENUM_FIELD_NUMBER: builtins.int
        name: builtins.str
        @property
        def value(self) -> Global___FunctionSignature.Argument.ValueArgument: ...
        @property
        def type(self) -> Global___FunctionSignature.Argument.TypeArgument: ...
        @property
        def enum(self) -> Global___FunctionSignature.Argument.EnumArgument: ...
        def __init__(
            self,
            *,
            name: builtins.str = ...,
            value: Global___FunctionSignature.Argument.ValueArgument | None = ...,
            type: Global___FunctionSignature.Argument.TypeArgument | None = ...,
            enum: Global___FunctionSignature.Argument.EnumArgument | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["argument_kind", b"argument_kind", "enum", b"enum", "type", b"type", "value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["argument_kind", b"argument_kind", "enum", b"enum", "name", b"name", "type", b"type", "value", b"value"]) -> None: ...
        def WhichOneof(self, oneof_group: typing.Literal["argument_kind", b"argument_kind"]) -> typing.Literal["value", "type", "enum"] | None: ...

    def __init__(
        self,
    ) -> None: ...

Global___FunctionSignature: typing_extensions.TypeAlias = FunctionSignature
