import ares_data_type_pb2 as _ares_data_type_pb2
import ares_quantity_type_pb2 as _ares_quantity_type_pb2
import ares_struct_pb2 as _ares_struct_pb2
import limits_pb2 as _limits_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class AresStructSchema(_message.Message):
    __slots__ = ("fields",)
    class FieldsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: AresValueSchema
        def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[AresValueSchema, _Mapping]] = ...) -> None: ...
    FIELDS_FIELD_NUMBER: _ClassVar[int]
    fields: _containers.MessageMap[str, AresValueSchema]
    def __init__(self, fields: _Optional[_Mapping[str, AresValueSchema]] = ...) -> None: ...

class AresValueSchema(_message.Message):
    __slots__ = ("type", "optional", "description", "quantity_schema", "string_choices", "number_choices", "limits", "struct_schema", "list_element_schema", "min_number_value", "max_number_value")
    TYPE_FIELD_NUMBER: _ClassVar[int]
    OPTIONAL_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    QUANTITY_SCHEMA_FIELD_NUMBER: _ClassVar[int]
    STRING_CHOICES_FIELD_NUMBER: _ClassVar[int]
    NUMBER_CHOICES_FIELD_NUMBER: _ClassVar[int]
    LIMITS_FIELD_NUMBER: _ClassVar[int]
    STRUCT_SCHEMA_FIELD_NUMBER: _ClassVar[int]
    LIST_ELEMENT_SCHEMA_FIELD_NUMBER: _ClassVar[int]
    MIN_NUMBER_VALUE_FIELD_NUMBER: _ClassVar[int]
    MAX_NUMBER_VALUE_FIELD_NUMBER: _ClassVar[int]
    type: _ares_data_type_pb2.AresDataType
    optional: bool
    description: str
    quantity_schema: QuantitySchema
    string_choices: _ares_struct_pb2.StringArray
    number_choices: _ares_struct_pb2.NumberArray
    limits: _limits_pb2.Limits
    struct_schema: AresStructSchema
    list_element_schema: AresValueSchema
    min_number_value: float
    max_number_value: float
    def __init__(self, type: _Optional[_Union[_ares_data_type_pb2.AresDataType, str]] = ..., optional: bool = ..., description: _Optional[str] = ..., quantity_schema: _Optional[_Union[QuantitySchema, _Mapping]] = ..., string_choices: _Optional[_Union[_ares_struct_pb2.StringArray, _Mapping]] = ..., number_choices: _Optional[_Union[_ares_struct_pb2.NumberArray, _Mapping]] = ..., limits: _Optional[_Union[_limits_pb2.Limits, _Mapping]] = ..., struct_schema: _Optional[_Union[AresStructSchema, _Mapping]] = ..., list_element_schema: _Optional[_Union[AresValueSchema, _Mapping]] = ..., min_number_value: _Optional[float] = ..., max_number_value: _Optional[float] = ...) -> None: ...

class QuantitySchema(_message.Message):
    __slots__ = ("quantity_type", "bounds_unit", "min_scalar_value", "max_scalar_value")
    QUANTITY_TYPE_FIELD_NUMBER: _ClassVar[int]
    BOUNDS_UNIT_FIELD_NUMBER: _ClassVar[int]
    MIN_SCALAR_VALUE_FIELD_NUMBER: _ClassVar[int]
    MAX_SCALAR_VALUE_FIELD_NUMBER: _ClassVar[int]
    quantity_type: _ares_quantity_type_pb2.QuantityType
    bounds_unit: str
    min_scalar_value: float
    max_scalar_value: float
    def __init__(self, quantity_type: _Optional[_Union[_ares_quantity_type_pb2.QuantityType, str]] = ..., bounds_unit: _Optional[str] = ..., min_scalar_value: _Optional[float] = ..., max_scalar_value: _Optional[float] = ...) -> None: ...
