"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.descriptor_pb2
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.internal.extension_dict
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

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

class _ScalarTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ScalarType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SCALAR_TYPE_UNSPECIFIED: _ScalarType.ValueType  # 0
    SCALAR_TYPE_STRING: _ScalarType.ValueType  # 1
    SCALAR_TYPE_BYTES: _ScalarType.ValueType  # 2

class ScalarType(_ScalarType, metaclass=_ScalarTypeEnumTypeWrapper): ...

SCALAR_TYPE_UNSPECIFIED: ScalarType.ValueType  # 0
SCALAR_TYPE_STRING: ScalarType.ValueType  # 1
SCALAR_TYPE_BYTES: ScalarType.ValueType  # 2
global___ScalarType = ScalarType

@typing_extensions.final
class InterfaceDescriptor(google.protobuf.message.Message):
    """InterfaceDescriptor describes an interface type to be used with
    accepts_interface and implements_interface and declared by declare_interface.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    name: builtins.str
    """name is the name of the interface. It should be a short-name (without
    a period) such that the fully qualified name of the interface will be
    package.name, ex. for the package a.b and interface named C, the
    fully-qualified name will be a.b.C.
    """
    description: builtins.str
    """description is a human-readable description of the interface and its
    purpose.
    """
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        description: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "name", b"name"]) -> None: ...

global___InterfaceDescriptor = InterfaceDescriptor

@typing_extensions.final
class ScalarDescriptor(google.protobuf.message.Message):
    """ScalarDescriptor describes an scalar type to be used with
    the scalar field option and declared by declare_scalar.
    Scalars extend simple protobuf built-in types with additional
    syntax and semantics, for instance to represent big integers.
    Scalars should ideally define an encoding such that there is only one
    valid syntactical representation for a given semantic meaning,
    i.e. the encoding should be deterministic.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    FIELD_TYPE_FIELD_NUMBER: builtins.int
    name: builtins.str
    """name is the name of the scalar. It should be a short-name (without
    a period) such that the fully qualified name of the scalar will be
    package.name, ex. for the package a.b and scalar named C, the
    fully-qualified name will be a.b.C.
    """
    description: builtins.str
    """description is a human-readable description of the scalar and its
    encoding format. For instance a big integer or decimal scalar should
    specify precisely the expected encoding format.
    """
    @property
    def field_type(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___ScalarType.ValueType]:
        """field_type is the type of field with which this scalar can be used.
        Scalars can be used with one and only one type of field so that
        encoding standards and simple and clear. Currently only string and
        bytes fields are supported for scalars.
        """
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        description: builtins.str = ...,
        field_type: collections.abc.Iterable[global___ScalarType.ValueType] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "field_type", b"field_type", "name", b"name"]) -> None: ...

global___ScalarDescriptor = ScalarDescriptor

IMPLEMENTS_INTERFACE_FIELD_NUMBER: builtins.int
ACCEPTS_INTERFACE_FIELD_NUMBER: builtins.int
SCALAR_FIELD_NUMBER: builtins.int
DECLARE_INTERFACE_FIELD_NUMBER: builtins.int
DECLARE_SCALAR_FIELD_NUMBER: builtins.int
implements_interface: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]]
"""implements_interface is used to indicate the type name of the interface
that a message implements so that it can be used in google.protobuf.Any
fields that accept that interface. A message can implement multiple
interfaces. Interfaces should be declared using a declare_interface
file option.
"""
accepts_interface: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str]
"""accepts_interface is used to annotate that a google.protobuf.Any
field accepts messages that implement the specified interface.
Interfaces should be declared using a declare_interface file option.
"""
scalar: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str]
"""scalar is used to indicate that this field follows the formatting defined
by the named scalar which should be declared with declare_scalar. Code
generators may choose to use this information to map this field to a
language-specific type representing the scalar.
"""
declare_interface: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FileOptions, google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___InterfaceDescriptor]]
"""declare_interface declares an interface type to be used with
accepts_interface and implements_interface. Interface names are
expected to follow the following convention such that their declaration
can be discovered by tools: for a given interface type a.b.C, it is
expected that the declaration will be found in a protobuf file named
a/b/interfaces.proto in the file descriptor set.
"""
declare_scalar: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FileOptions, google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ScalarDescriptor]]
"""declare_scalar declares a scalar type to be used with
the scalar field option. Scalar names are
expected to follow the following convention such that their declaration
can be discovered by tools: for a given scalar type a.b.C, it is
expected that the declaration will be found in a protobuf file named
a/b/scalars.proto in the file descriptor set.
"""
