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

import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ..core.serialization import FieldMetadata
from .amount_element import AmountElement
from .auto_element import AutoElement
from .contact_element import ContactElement
from .element import Element
from .header_element import HeaderElement
from .invoice_element import InvoiceElement
from .label_element import LabelElement
from .method_element import MethodElement
from .note_element import NoteElement
from .page_element import PageElement
from .payor_element import PayorElement
from .subdomain import Subdomain


class PageContent(UniversalBaseModel):
    amount: typing.Optional[AmountElement] = pydantic.Field(default=None)
    """
    Amount section of payment page
    """

    autopay: typing.Optional[AutoElement] = pydantic.Field(default=None)
    """
    Autopay section of payment page
    """

    contact_us: typing_extensions.Annotated[typing.Optional[ContactElement], FieldMetadata(alias="contactUs")] = (
        pydantic.Field(default=None)
    )
    """
    ContactUs section of payment page
    """

    entry: typing.Optional[str] = pydantic.Field(default=None)
    """
    Identifier of entry point owner of page
    """

    invoices: typing.Optional[InvoiceElement] = pydantic.Field(default=None)
    """
    Invoices section of payment page
    """

    logo: typing.Optional[Element] = pydantic.Field(default=None)
    """
    Logo section of payment page
    """

    message_before_paying: typing_extensions.Annotated[
        typing.Optional[LabelElement], FieldMetadata(alias="messageBeforePaying")
    ] = pydantic.Field(default=None)
    """
    Message section of payment page
    """

    name: typing.Optional[str] = pydantic.Field(default=None)
    """
    Descriptor of page
    """

    notes: typing.Optional[NoteElement] = pydantic.Field(default=None)
    """
    Notes section of payment page
    """

    page: typing.Optional[PageElement] = pydantic.Field(default=None)
    """
    Page header section of payment page
    """

    payment_button: typing_extensions.Annotated[typing.Optional[LabelElement], FieldMetadata(alias="paymentButton")] = (
        pydantic.Field(default=None)
    )
    """
    Payment button section of payment page
    """

    payment_methods: typing_extensions.Annotated[
        typing.Optional[MethodElement], FieldMetadata(alias="paymentMethods")
    ] = pydantic.Field(default=None)
    """
    Payment methods section of payment page
    """

    payor: typing.Optional[PayorElement] = pydantic.Field(default=None)
    """
    Customer/Payor section of payment page
    """

    review: typing.Optional[HeaderElement] = pydantic.Field(default=None)
    """
    Review section of payment page
    """

    subdomain: typing.Optional[Subdomain] = pydantic.Field(default=None)
    """
    Unique identifier assigned to the page.
    """

    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
