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

from ..core.pydantic_utilities import UniversalBaseModel
import pydantic
import typing
from .floor import Floor
from .commercial_space import CommercialSpace
from .collection import Collection
from .project_custom_button_txt import ProjectCustomButtonTxt
from .project_internal_ur_ls import ProjectInternalUrLs
from ..core.pydantic_utilities import IS_PYDANTIC_V2


class Project(UniversalBaseModel):
    id: str = pydantic.Field(alias="_id")
    name: str
    namespace: str
    host_name: str = pydantic.Field(alias="hostName")
    floors: typing.Optional[typing.List[Floor]] = None
    commercial_spaces: typing.Optional[typing.List[CommercialSpace]] = pydantic.Field(
        alias="commercialSpaces", default=None
    )
    collections: typing.Optional[typing.List[Collection]] = None
    project_lang: typing.Optional[str] = pydantic.Field(alias="projectLang", default=None)
    style_navigation: typing.Optional[str] = pydantic.Field(alias="styleNavigation", default=None)
    show_prices: typing.Optional[bool] = pydantic.Field(alias="showPrices", default=None)
    show_availability: typing.Optional[bool] = pydantic.Field(alias="showAvailability", default=None)
    show_bathrooms: typing.Optional[bool] = pydantic.Field(alias="showBathrooms", default=None)
    show_parking: typing.Optional[bool] = pydantic.Field(alias="showParking", default=None)
    show_orientation: typing.Optional[bool] = pydantic.Field(alias="showOrientation", default=None)
    hide_sold: typing.Optional[bool] = pydantic.Field(alias="hideSold", default=None)
    initial_view: typing.Optional[str] = pydantic.Field(alias="initialView", default=None)
    logo: typing.Optional[str] = None
    cover_image: typing.Optional[str] = pydantic.Field(alias="coverImage", default=None)
    color_base: typing.Optional[str] = pydantic.Field(alias="colorBase", default=None)
    color_accent: typing.Optional[str] = pydantic.Field(alias="colorAccent", default=None)
    color_button: typing.Optional[str] = pydantic.Field(alias="colorButton", default=None)
    color_available: typing.Optional[str] = pydantic.Field(alias="colorAvailable", default=None)
    color_sold: typing.Optional[str] = pydantic.Field(alias="colorSold", default=None)
    color_reserved: typing.Optional[str] = pydantic.Field(alias="colorReserved", default=None)
    custom_button_txt: typing.Optional[ProjectCustomButtonTxt] = pydantic.Field(alias="customButtonTxt", default=None)
    """
    Translated string per language code
    """

    internal_ur_ls: typing.Optional[ProjectInternalUrLs] = pydantic.Field(alias="internalURLs", default=None)
    """
    Translated string per language code
    """

    website_url: typing.Optional[str] = pydantic.Field(alias="websiteURL", default=None)
    custom_domain: typing.Optional[str] = pydantic.Field(alias="customDomain", default=None)
    share_page_enabled: typing.Optional[bool] = pydantic.Field(alias="sharePageEnabled", default=None)

    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
