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

import typing

import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
from ...core.unchecked_base_model import UncheckedBaseModel


class StartAgentsRequestPropertiesAdvancedFeatures(UncheckedBaseModel):
    """
    Advanced features configuration.
    """

    enable_aivad: typing.Optional[bool] = pydantic.Field(default=None)
    """
    Whether to enable the intelligent interruption handling function (AIVAD). This feature is currently available only for English. Deprecated. Use `turn_detection.config.end_of_speech.mode.semantic` instead.
    """

    enable_mllm: typing.Optional[bool] = pydantic.Field(default=None)
    """
    Enable Multimodal Large Language Model. Enabling MLLM automatically disables ASR, LLM, and TTS. When you set this parameter to true, `enable_aivad` is also disabled.
    """

    enable_rtm: typing.Optional[bool] = pydantic.Field(default=None)
    """
    Whether to enable the Signaling (RTM) service. When enabled, the agent can combine the capabilities provided by Signaling to implement advanced functions, such as delivering custom information. Before enabling the Signaling service, make sure the token includes both RTC and RTM privileges.
    """

    enable_sal: typing.Optional[bool] = pydantic.Field(default=None)
    """
    Enable Selective Attention Locking (SAL). When enabled, configure the `sal` field to set up speaker recognition or locking modes.
    """

    enable_tools: typing.Optional[bool] = pydantic.Field(default=None)
    """
    Enable tool invocation. When enabled, the agent can invoke tools provided by the MCP server to implement advanced functionality.
    """

    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
