# generated by datamodel-codegen:
#   filename:  complex_proto3.proto
#   timestamp: 2019-07-26T00:00:00+00:00

from __future__ import annotations

from datetime import timedelta
from enum import Enum
from typing import Annotated, Any

from msgspec import UNSET, Meta, Struct, UnsetType, field


class ExampleCommonStatus(Enum):
    STATUS_UNSPECIFIED = 'STATUS_UNSPECIFIED'
    """
    Default status for proto3 compatibility.
    """
    ACTIVE = 'ACTIVE'
    """
    Active resource.
    """
    SUSPENDED = 'SUSPENDED'
    """
    Suspended resource.
    """


class ExampleCommonAddress(Struct):
    line_1: str | UnsetType = ''
    city: str | UnsetType = ''


class ExamplePublicPublicToken(Struct):
    value: str | UnsetType = ''


class ExampleShopV1OrderRole(Enum):
    ROLE_UNSPECIFIED = 'ROLE_UNSPECIFIED'
    BUYER = 'BUYER'


class ExampleShopV1OrderLineItem(Struct):
    sku: str | UnsetType = ''
    quantity: int | UnsetType = 0


class ExampleShopV1Order(Struct):
    id: Annotated[str, Meta(description='Stable order identifier.')] | UnsetType = ''
    """
    Stable order identifier.
    """
    double_value: float | UnsetType = 0.0
    float_value: float | UnsetType = 0.0
    int32_value: int | UnsetType = 0
    int64_value: int | UnsetType = 0
    uint32_value: Annotated[int, Meta(ge=0, le=4294967295)] | UnsetType = 0
    uint64_value: Annotated[int, Meta(ge=0, le=18446744073709551615)] | UnsetType = 0
    sint32_value: int | UnsetType = 0
    sint64_value: int | UnsetType = 0
    fixed32_value: Annotated[int, Meta(ge=0, le=4294967295)] | UnsetType = 0
    fixed64_value: Annotated[int, Meta(ge=0, le=18446744073709551615)] | UnsetType = 0
    sfixed32_value: int | UnsetType = 0
    sfixed64_value: int | UnsetType = 0
    active: bool | UnsetType = False
    payload: bytes | UnsetType = b''
    tags: list[str] | UnsetType = field(default_factory=list)
    items: dict[str, ExampleShopV1OrderLineItem] | UnsetType = field(
        default_factory=dict
    )
    previous_items: list[ExampleShopV1OrderLineItem] | UnsetType = field(
        default_factory=list
    )
    shipping_address: ExampleCommonAddress | UnsetType = UNSET
    status: ExampleCommonStatus | UnsetType = ExampleCommonStatus.STATUS_UNSPECIFIED
    created_at: str | UnsetType = UNSET
    ttl: timedelta | UnsetType = UNSET
    metadata: dict[str, Any] | UnsetType = UNSET
    arbitrary: bool | float | str | dict[str, Any] | list[Any] | None | UnsetType = (
        UNSET
    )
    values: list[Any] | UnsetType = UNSET
    attachment: dict[str, Any] | UnsetType = UNSET
    update_mask: str | UnsetType = UNSET
    optional_note: str | None | UnsetType = UNSET
    public_token: ExamplePublicPublicToken | UnsetType = UNSET
    roles: list[ExampleShopV1OrderRole] | UnsetType = field(default_factory=list)
    email: Annotated[str, Meta(description='oneof: contact')] | UnsetType = UNSET
    """
    oneof: contact
    """
    phone: Annotated[str, Meta(description='oneof: contact')] | UnsetType = UNSET
    """
    oneof: contact
    """


class ExampleShopV1GetOrderRequest(Struct):
    id: str | UnsetType = ''


class ExampleShopV1GetOrderResponse(Struct):
    order: ExampleShopV1Order | UnsetType = UNSET
