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

from ...core.pydantic_utilities import UniversalBaseModel
import typing
from .line_item_availabilities import LineItemAvailabilities
import pydantic
from ...invoice_types.types.invoice_status import InvoiceStatus
from ...core.pydantic_utilities import IS_PYDANTIC_V2


class TokenGenerationInvoiceOptions(UniversalBaseModel):
    line_items: typing.Optional[LineItemAvailabilities] = pydantic.Field(alias="lineItems", default=None)
    """
    Defaults to OPTIONAL. If set to REQUIRED, the user will be required to provide at least one line item when creating an invoice. If set to DISABLED, the user will not be able to provide line items when creating an invoice.
    """

    disable_line_items: typing.Optional[bool] = pydantic.Field(alias="disableLineItems", default=None)
    """
    DEPRECATED. Use lineItems instead.
    """

    status: typing.List[InvoiceStatus]

    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
