# generated by datamodel-codegen:
#   filename:  protobuf
#   timestamp: 2019-07-26T00:00:00+00:00

from __future__ import annotations

from datetime import timedelta
from typing import Any

from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, conint

from . import (
    example_common_address,
    example_common_status,
    example_public_public_token,
    example_shop_v1_order_line_item,
    example_shop_v1_order_role,
)


class ExampleShopV1Order(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    id: str | None = Field('', description='Stable order identifier.')
    double_value: float | None = 0.0
    float_value: float | None = 0.0
    int32_value: int | None = 0
    int64_value: int | None = 0
    uint32_value: conint(ge=0, le=4294967295) | None = 0
    uint64_value: conint(ge=0, le=18446744073709551615) | None = 0
    sint32_value: int | None = 0
    sint64_value: int | None = 0
    fixed32_value: conint(ge=0, le=4294967295) | None = 0
    fixed64_value: conint(ge=0, le=18446744073709551615) | None = 0
    sfixed32_value: int | None = 0
    sfixed64_value: int | None = 0
    active: bool | None = False
    payload: bytes | None = b''
    tags: list[str] | None = []
    items: dict[
        str, example_shop_v1_order_line_item.ExampleShopV1OrderLineItem
    ] | None = Field({}, validate_default=True)
    previous_items: list[
        example_shop_v1_order_line_item.ExampleShopV1OrderLineItem
    ] | None = Field([], validate_default=True)
    shipping_address: example_common_address.ExampleCommonAddress | None = None
    status: example_common_status.ExampleCommonStatus | None = 'STATUS_UNSPECIFIED'
    created_at: AwareDatetime | None = None
    ttl: timedelta | None = None
    metadata: dict[str, Any] | None = None
    arbitrary: bool | float | str | dict[str, Any] | list[Any] | None = None
    values: list[Any] | None = None
    attachment: dict[str, Any] | None = None
    update_mask: str | None = None
    optional_note: str | None = None
    public_token: example_public_public_token.ExamplePublicPublicToken | None = None
    roles: list[example_shop_v1_order_role.ExampleShopV1OrderRole] | None = []
    email: str | None = Field(None, description='oneof: contact')
    phone: str | None = Field(None, description='oneof: contact')
