# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import datetime as _datetime
from typing import Optional
from typing_extensions import Literal

from pydantic import Field as FieldInfo

from ....._models import BaseModel
from ..carts.currency_object import CurrencyObject

__all__ = ["Offer", "Showtime"]


class Showtime(BaseModel):
    id: Optional[int] = None
    """Showtime Id"""

    api_type: Optional[str] = FieldInfo(alias="_type", default=None)

    datetime: Optional[_datetime.datetime] = None
    """Showtime datetime"""


class Offer(BaseModel):
    id: Optional[int] = None
    """Offer Id"""

    api_type: Optional[str] = FieldInfo(alias="_type", default=None)

    details_message: Optional[str] = FieldInfo(alias="detailsMessage", default=None)
    """Offer details display message"""

    has_been_viewed: Optional[bool] = FieldInfo(alias="hasBeenViewed", default=None)
    """true if offer has been viewed"""

    location_id: Optional[int] = FieldInfo(alias="locationId", default=None)
    """Location id"""

    num_seats: Optional[float] = FieldInfo(alias="numSeats", default=None)
    """Number of tickets"""

    offer_type: Optional[Literal["LOTTERY_LOSER", "PRIVATE_ALLOCATION"]] = FieldInfo(alias="offerType", default=None)
    """Type of offer"""

    price: Optional[CurrencyObject] = None

    promo_message: Optional[str] = FieldInfo(alias="promoMessage", default=None)
    """Promo display message"""

    show_id: Optional[int] = FieldInfo(alias="showId", default=None)
    """Show id"""

    showtime: Optional[Showtime] = None
    """Showtime object that contains performance datetime."""

    status: Optional[Literal["ASSIGNED", "SOLD_OUT"]] = None
    """Status of offer"""
