# 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 .agent_summary_config_agent_use_case import AgentSummaryConfigAgentUseCase
from .agent_summary_config_emails_item import AgentSummaryConfigEmailsItem
from .agent_summary_config_phones_item import AgentSummaryConfigPhonesItem
from .agent_summary_config_websites_item import AgentSummaryConfigWebsitesItem


class AgentSummaryConfig(UniversalBaseModel):
    """
    Agent configuration details.
    """

    name: typing.Optional[str] = pydantic.Field(default=None)
    """
    Display name of the agent (max 40 characters).
    """

    description: typing.Optional[str] = pydantic.Field(default=None)
    """
    Description of the agent (max 100 characters).
    """

    color: typing.Optional[str] = pydantic.Field(default=None)
    """
    Hex color code for the agent.
    """

    websites: typing.Optional[typing.List[AgentSummaryConfigWebsitesItem]] = None
    phones: typing.Optional[typing.List[AgentSummaryConfigPhonesItem]] = None
    emails: typing.Optional[typing.List[AgentSummaryConfigEmailsItem]] = None
    icon_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="iconUrl")] = pydantic.Field(
        default=None
    )
    """
    Logo image URL.
    """

    hero_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="heroUrl")] = pydantic.Field(
        default=None
    )
    """
    Hero image URL.
    """

    privacy_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="privacyUrl")] = pydantic.Field(
        default=None
    )
    """
    Privacy policy URL.
    """

    terms_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="termsUrl")] = pydantic.Field(
        default=None
    )
    """
    Terms of service URL.
    """

    is_conversational: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="isConversational")] = (
        pydantic.Field(default=None)
    )
    """
    Whether the agent supports two-way conversation.
    """

    agent_use_case: typing_extensions.Annotated[
        typing.Optional[AgentSummaryConfigAgentUseCase], FieldMetadata(alias="agentUseCase")
    ] = pydantic.Field(default=None)
    """
    Use case for the agent.
    """

    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
