# This file was auto-generated by Fern from our API Definition.

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .shopify_customer import ShopifyCustomer
from .shopify_order import ShopifyOrder
from .shopify_product import ShopifyProduct


class ShopifyDataOutput(UniversalBaseModel):
    """
    Complete Shopify sandbox data structure.

    Orders reference customers and products by their index in the respective lists.
    Products and customers are created first, then orders are created with proper references.
    """

    products: typing.Optional[typing.List[ShopifyProduct]] = pydantic.Field(default=None)
    """
    List of products to create
    """

    customers: typing.Optional[typing.List[ShopifyCustomer]] = pydantic.Field(default=None)
    """
    List of customers to create
    """

    orders: typing.Optional[typing.List[ShopifyOrder]] = pydantic.Field(default=None)
    """
    List of orders to create
    """

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
