# 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 typing import Any, Literal, TypeAlias

from typing_extensions import NotRequired, TypedDict

ExampleCommonStatus: TypeAlias = Literal['STATUS_UNSPECIFIED', 'ACTIVE', 'SUSPENDED']
"""
Lifecycle state shared across APIs.
"""


class ExampleCommonAddress(TypedDict, closed=True):
    line_1: NotRequired[str]
    city: NotRequired[str]


class ExamplePublicPublicToken(TypedDict, closed=True):
    value: NotRequired[str]


ExampleShopV1OrderRole: TypeAlias = Literal['ROLE_UNSPECIFIED', 'BUYER']


class ExampleShopV1OrderLineItem(TypedDict, closed=True):
    sku: NotRequired[str]
    quantity: NotRequired[int]


class ExampleShopV1Order(TypedDict, closed=True):
    id: NotRequired[str]
    """
    Stable order identifier.
    """
    double_value: NotRequired[float]
    float_value: NotRequired[float]
    int32_value: NotRequired[int]
    int64_value: NotRequired[int]
    uint32_value: NotRequired[int]
    uint64_value: NotRequired[int]
    sint32_value: NotRequired[int]
    sint64_value: NotRequired[int]
    fixed32_value: NotRequired[int]
    fixed64_value: NotRequired[int]
    sfixed32_value: NotRequired[int]
    sfixed64_value: NotRequired[int]
    active: NotRequired[bool]
    payload: NotRequired[bytes]
    tags: NotRequired[list[str]]
    items: NotRequired[dict[str, ExampleShopV1OrderLineItem]]
    previous_items: NotRequired[list[ExampleShopV1OrderLineItem]]
    shipping_address: NotRequired[ExampleCommonAddress]
    status: NotRequired[ExampleCommonStatus]
    created_at: NotRequired[str]
    ttl: NotRequired[timedelta]
    metadata: NotRequired[dict[str, Any]]
    arbitrary: NotRequired[bool | float | str | dict[str, Any] | list[Any] | None]
    values: NotRequired[list[Any]]
    attachment: NotRequired[dict[str, Any]]
    update_mask: NotRequired[str]
    optional_note: NotRequired[str | None]
    public_token: NotRequired[ExamplePublicPublicToken]
    roles: NotRequired[list[ExampleShopV1OrderRole]]
    email: NotRequired[str]
    """
    oneof: contact
    """
    phone: NotRequired[str]
    """
    oneof: contact
    """


class ExampleShopV1GetOrderRequest(TypedDict, closed=True):
    id: NotRequired[str]


class ExampleShopV1GetOrderResponse(TypedDict, closed=True):
    order: NotRequired[ExampleShopV1Order]
