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

import typing

from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
from ..types.trigger_config_schema import TriggerConfigSchema
from ..types.voice_agent_status_response import VoiceAgentStatusResponse
from ..types.voice_profile_list_response import VoiceProfileListResponse
from ..types.voice_profile_response import VoiceProfileResponse
from .raw_client import AsyncRawMeetingBuddyVoiceAgentClient, RawMeetingBuddyVoiceAgentClient

# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)


class MeetingBuddyVoiceAgentClient:
    def __init__(self, *, client_wrapper: SyncClientWrapper):
        self._raw_client = RawMeetingBuddyVoiceAgentClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> RawMeetingBuddyVoiceAgentClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        RawMeetingBuddyVoiceAgentClient
        """
        return self._raw_client

    def start_voice_agent(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Start the voice agent for an active session.

        Parameters
        ----------
        session_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.start_voice_agent(
            session_id="session_id",
        )
        """
        _response = self._raw_client.start_voice_agent(session_id, request_options=request_options)
        return _response.data

    def stop_voice_agent(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Stop the voice agent for a session.

        Parameters
        ----------
        session_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.stop_voice_agent(
            session_id="session_id",
        )
        """
        _response = self._raw_client.stop_voice_agent(session_id, request_options=request_options)
        return _response.data

    def voice_agent_speak(
        self, session_id: str, *, text: str, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Force the voice agent to say specific text in the meeting.

        Parameters
        ----------
        session_id : str

        text : str
            Text for the agent to speak

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.voice_agent_speak(
            session_id="session_id",
            text="text",
        )
        """
        _response = self._raw_client.voice_agent_speak(session_id, text=text, request_options=request_options)
        return _response.data

    def voice_agent_ask(
        self, session_id: str, *, question: str, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Ask the voice agent a question; it responds in the meeting.

        Parameters
        ----------
        session_id : str

        question : str
            Question for the agent

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.voice_agent_ask(
            session_id="session_id",
            question="question",
        )
        """
        _response = self._raw_client.voice_agent_ask(session_id, question=question, request_options=request_options)
        return _response.data

    def voice_agent_status(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Get voice agent status for a session.

        Parameters
        ----------
        session_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.voice_agent_status(
            session_id="session_id",
        )
        """
        _response = self._raw_client.voice_agent_status(session_id, request_options=request_options)
        return _response.data

    def list_voice_profiles(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceProfileListResponse:
        """
        List all voice profiles for the organization.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileListResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.list_voice_profiles(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_voice_profiles(organization_id, request_options=request_options)
        return _response.data

    def create_voice_profile(
        self,
        organization_id: str,
        *,
        name: str,
        tts_provider: typing.Optional[str] = OMIT,
        tts_model: typing.Optional[str] = OMIT,
        voice_id: typing.Optional[str] = OMIT,
        personality: typing.Optional[str] = OMIT,
        system_prompt: typing.Optional[str] = OMIT,
        trigger_config: typing.Optional[TriggerConfigSchema] = OMIT,
        stt_provider: typing.Optional[str] = OMIT,
        stt_model: typing.Optional[str] = OMIT,
        emotion_provider: typing.Optional[str] = OMIT,
        emotion_model: typing.Optional[str] = OMIT,
        emotion_enabled: typing.Optional[bool] = OMIT,
        model_key: typing.Optional[str] = OMIT,
        max_response_tokens: typing.Optional[int] = OMIT,
        temperature: typing.Optional[float] = OMIT,
        context_window_minutes: typing.Optional[int] = OMIT,
        max_context_tokens: typing.Optional[int] = OMIT,
        default_emotion: typing.Optional[str] = OMIT,
        emotion_adaptation: typing.Optional[bool] = OMIT,
        is_default: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> VoiceProfileResponse:
        """
        Create a new voice profile for the organization.

        Parameters
        ----------
        organization_id : str

        name : str
            Profile name

        tts_provider : typing.Optional[str]
            TTS provider

        tts_model : typing.Optional[str]
            TTS model

        voice_id : typing.Optional[str]
            Voice identifier

        personality : typing.Optional[str]
            Personality description

        system_prompt : typing.Optional[str]
            Custom system prompt

        trigger_config : typing.Optional[TriggerConfigSchema]
            Trigger settings

        stt_provider : typing.Optional[str]

        stt_model : typing.Optional[str]

        emotion_provider : typing.Optional[str]

        emotion_model : typing.Optional[str]

        emotion_enabled : typing.Optional[bool]

        model_key : typing.Optional[str]
            LLM model key

        max_response_tokens : typing.Optional[int]

        temperature : typing.Optional[float]

        context_window_minutes : typing.Optional[int]

        max_context_tokens : typing.Optional[int]

        default_emotion : typing.Optional[str]

        emotion_adaptation : typing.Optional[bool]

        is_default : typing.Optional[bool]
            Set as org default

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.create_voice_profile(
            organization_id="organization_id",
            name="name",
        )
        """
        _response = self._raw_client.create_voice_profile(
            organization_id,
            name=name,
            tts_provider=tts_provider,
            tts_model=tts_model,
            voice_id=voice_id,
            personality=personality,
            system_prompt=system_prompt,
            trigger_config=trigger_config,
            stt_provider=stt_provider,
            stt_model=stt_model,
            emotion_provider=emotion_provider,
            emotion_model=emotion_model,
            emotion_enabled=emotion_enabled,
            model_key=model_key,
            max_response_tokens=max_response_tokens,
            temperature=temperature,
            context_window_minutes=context_window_minutes,
            max_context_tokens=max_context_tokens,
            default_emotion=default_emotion,
            emotion_adaptation=emotion_adaptation,
            is_default=is_default,
            request_options=request_options,
        )
        return _response.data

    def get_voice_profile(
        self, organization_id: str, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceProfileResponse:
        """
        Get a specific voice profile.

        Parameters
        ----------
        organization_id : str

        profile_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.get_voice_profile(
            organization_id="organization_id",
            profile_id="profile_id",
        )
        """
        _response = self._raw_client.get_voice_profile(organization_id, profile_id, request_options=request_options)
        return _response.data

    def update_voice_profile(
        self,
        organization_id: str,
        profile_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        tts_provider: typing.Optional[str] = OMIT,
        tts_model: typing.Optional[str] = OMIT,
        voice_id: typing.Optional[str] = OMIT,
        personality: typing.Optional[str] = OMIT,
        system_prompt: typing.Optional[str] = OMIT,
        trigger_config: typing.Optional[TriggerConfigSchema] = OMIT,
        stt_provider: typing.Optional[str] = OMIT,
        stt_model: typing.Optional[str] = OMIT,
        emotion_provider: typing.Optional[str] = OMIT,
        emotion_model: typing.Optional[str] = OMIT,
        emotion_enabled: typing.Optional[bool] = OMIT,
        model_key: typing.Optional[str] = OMIT,
        max_response_tokens: typing.Optional[int] = OMIT,
        temperature: typing.Optional[float] = OMIT,
        context_window_minutes: typing.Optional[int] = OMIT,
        max_context_tokens: typing.Optional[int] = OMIT,
        default_emotion: typing.Optional[str] = OMIT,
        emotion_adaptation: typing.Optional[bool] = OMIT,
        is_default: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> VoiceProfileResponse:
        """
        Update a voice profile.

        Parameters
        ----------
        organization_id : str

        profile_id : str

        name : typing.Optional[str]

        tts_provider : typing.Optional[str]

        tts_model : typing.Optional[str]

        voice_id : typing.Optional[str]

        personality : typing.Optional[str]

        system_prompt : typing.Optional[str]

        trigger_config : typing.Optional[TriggerConfigSchema]

        stt_provider : typing.Optional[str]

        stt_model : typing.Optional[str]

        emotion_provider : typing.Optional[str]

        emotion_model : typing.Optional[str]

        emotion_enabled : typing.Optional[bool]

        model_key : typing.Optional[str]

        max_response_tokens : typing.Optional[int]

        temperature : typing.Optional[float]

        context_window_minutes : typing.Optional[int]

        max_context_tokens : typing.Optional[int]

        default_emotion : typing.Optional[str]

        emotion_adaptation : typing.Optional[bool]

        is_default : typing.Optional[bool]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.update_voice_profile(
            organization_id="organization_id",
            profile_id="profile_id",
        )
        """
        _response = self._raw_client.update_voice_profile(
            organization_id,
            profile_id,
            name=name,
            tts_provider=tts_provider,
            tts_model=tts_model,
            voice_id=voice_id,
            personality=personality,
            system_prompt=system_prompt,
            trigger_config=trigger_config,
            stt_provider=stt_provider,
            stt_model=stt_model,
            emotion_provider=emotion_provider,
            emotion_model=emotion_model,
            emotion_enabled=emotion_enabled,
            model_key=model_key,
            max_response_tokens=max_response_tokens,
            temperature=temperature,
            context_window_minutes=context_window_minutes,
            max_context_tokens=max_context_tokens,
            default_emotion=default_emotion,
            emotion_adaptation=emotion_adaptation,
            is_default=is_default,
            request_options=request_options,
        )
        return _response.data

    def delete_voice_profile(
        self, organization_id: str, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Delete a voice profile.

        Parameters
        ----------
        organization_id : str

        profile_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_voice_agent.delete_voice_profile(
            organization_id="organization_id",
            profile_id="profile_id",
        )
        """
        _response = self._raw_client.delete_voice_profile(organization_id, profile_id, request_options=request_options)
        return _response.data


class AsyncMeetingBuddyVoiceAgentClient:
    def __init__(self, *, client_wrapper: AsyncClientWrapper):
        self._raw_client = AsyncRawMeetingBuddyVoiceAgentClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> AsyncRawMeetingBuddyVoiceAgentClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        AsyncRawMeetingBuddyVoiceAgentClient
        """
        return self._raw_client

    async def start_voice_agent(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Start the voice agent for an active session.

        Parameters
        ----------
        session_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.start_voice_agent(
                session_id="session_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.start_voice_agent(session_id, request_options=request_options)
        return _response.data

    async def stop_voice_agent(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Stop the voice agent for a session.

        Parameters
        ----------
        session_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.stop_voice_agent(
                session_id="session_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.stop_voice_agent(session_id, request_options=request_options)
        return _response.data

    async def voice_agent_speak(
        self, session_id: str, *, text: str, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Force the voice agent to say specific text in the meeting.

        Parameters
        ----------
        session_id : str

        text : str
            Text for the agent to speak

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.voice_agent_speak(
                session_id="session_id",
                text="text",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.voice_agent_speak(session_id, text=text, request_options=request_options)
        return _response.data

    async def voice_agent_ask(
        self, session_id: str, *, question: str, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Ask the voice agent a question; it responds in the meeting.

        Parameters
        ----------
        session_id : str

        question : str
            Question for the agent

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.voice_agent_ask(
                session_id="session_id",
                question="question",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.voice_agent_ask(
            session_id, question=question, request_options=request_options
        )
        return _response.data

    async def voice_agent_status(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceAgentStatusResponse:
        """
        Get voice agent status for a session.

        Parameters
        ----------
        session_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceAgentStatusResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.voice_agent_status(
                session_id="session_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.voice_agent_status(session_id, request_options=request_options)
        return _response.data

    async def list_voice_profiles(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceProfileListResponse:
        """
        List all voice profiles for the organization.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileListResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.list_voice_profiles(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_voice_profiles(organization_id, request_options=request_options)
        return _response.data

    async def create_voice_profile(
        self,
        organization_id: str,
        *,
        name: str,
        tts_provider: typing.Optional[str] = OMIT,
        tts_model: typing.Optional[str] = OMIT,
        voice_id: typing.Optional[str] = OMIT,
        personality: typing.Optional[str] = OMIT,
        system_prompt: typing.Optional[str] = OMIT,
        trigger_config: typing.Optional[TriggerConfigSchema] = OMIT,
        stt_provider: typing.Optional[str] = OMIT,
        stt_model: typing.Optional[str] = OMIT,
        emotion_provider: typing.Optional[str] = OMIT,
        emotion_model: typing.Optional[str] = OMIT,
        emotion_enabled: typing.Optional[bool] = OMIT,
        model_key: typing.Optional[str] = OMIT,
        max_response_tokens: typing.Optional[int] = OMIT,
        temperature: typing.Optional[float] = OMIT,
        context_window_minutes: typing.Optional[int] = OMIT,
        max_context_tokens: typing.Optional[int] = OMIT,
        default_emotion: typing.Optional[str] = OMIT,
        emotion_adaptation: typing.Optional[bool] = OMIT,
        is_default: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> VoiceProfileResponse:
        """
        Create a new voice profile for the organization.

        Parameters
        ----------
        organization_id : str

        name : str
            Profile name

        tts_provider : typing.Optional[str]
            TTS provider

        tts_model : typing.Optional[str]
            TTS model

        voice_id : typing.Optional[str]
            Voice identifier

        personality : typing.Optional[str]
            Personality description

        system_prompt : typing.Optional[str]
            Custom system prompt

        trigger_config : typing.Optional[TriggerConfigSchema]
            Trigger settings

        stt_provider : typing.Optional[str]

        stt_model : typing.Optional[str]

        emotion_provider : typing.Optional[str]

        emotion_model : typing.Optional[str]

        emotion_enabled : typing.Optional[bool]

        model_key : typing.Optional[str]
            LLM model key

        max_response_tokens : typing.Optional[int]

        temperature : typing.Optional[float]

        context_window_minutes : typing.Optional[int]

        max_context_tokens : typing.Optional[int]

        default_emotion : typing.Optional[str]

        emotion_adaptation : typing.Optional[bool]

        is_default : typing.Optional[bool]
            Set as org default

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.create_voice_profile(
                organization_id="organization_id",
                name="name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_voice_profile(
            organization_id,
            name=name,
            tts_provider=tts_provider,
            tts_model=tts_model,
            voice_id=voice_id,
            personality=personality,
            system_prompt=system_prompt,
            trigger_config=trigger_config,
            stt_provider=stt_provider,
            stt_model=stt_model,
            emotion_provider=emotion_provider,
            emotion_model=emotion_model,
            emotion_enabled=emotion_enabled,
            model_key=model_key,
            max_response_tokens=max_response_tokens,
            temperature=temperature,
            context_window_minutes=context_window_minutes,
            max_context_tokens=max_context_tokens,
            default_emotion=default_emotion,
            emotion_adaptation=emotion_adaptation,
            is_default=is_default,
            request_options=request_options,
        )
        return _response.data

    async def get_voice_profile(
        self, organization_id: str, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> VoiceProfileResponse:
        """
        Get a specific voice profile.

        Parameters
        ----------
        organization_id : str

        profile_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.get_voice_profile(
                organization_id="organization_id",
                profile_id="profile_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_voice_profile(
            organization_id, profile_id, request_options=request_options
        )
        return _response.data

    async def update_voice_profile(
        self,
        organization_id: str,
        profile_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        tts_provider: typing.Optional[str] = OMIT,
        tts_model: typing.Optional[str] = OMIT,
        voice_id: typing.Optional[str] = OMIT,
        personality: typing.Optional[str] = OMIT,
        system_prompt: typing.Optional[str] = OMIT,
        trigger_config: typing.Optional[TriggerConfigSchema] = OMIT,
        stt_provider: typing.Optional[str] = OMIT,
        stt_model: typing.Optional[str] = OMIT,
        emotion_provider: typing.Optional[str] = OMIT,
        emotion_model: typing.Optional[str] = OMIT,
        emotion_enabled: typing.Optional[bool] = OMIT,
        model_key: typing.Optional[str] = OMIT,
        max_response_tokens: typing.Optional[int] = OMIT,
        temperature: typing.Optional[float] = OMIT,
        context_window_minutes: typing.Optional[int] = OMIT,
        max_context_tokens: typing.Optional[int] = OMIT,
        default_emotion: typing.Optional[str] = OMIT,
        emotion_adaptation: typing.Optional[bool] = OMIT,
        is_default: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> VoiceProfileResponse:
        """
        Update a voice profile.

        Parameters
        ----------
        organization_id : str

        profile_id : str

        name : typing.Optional[str]

        tts_provider : typing.Optional[str]

        tts_model : typing.Optional[str]

        voice_id : typing.Optional[str]

        personality : typing.Optional[str]

        system_prompt : typing.Optional[str]

        trigger_config : typing.Optional[TriggerConfigSchema]

        stt_provider : typing.Optional[str]

        stt_model : typing.Optional[str]

        emotion_provider : typing.Optional[str]

        emotion_model : typing.Optional[str]

        emotion_enabled : typing.Optional[bool]

        model_key : typing.Optional[str]

        max_response_tokens : typing.Optional[int]

        temperature : typing.Optional[float]

        context_window_minutes : typing.Optional[int]

        max_context_tokens : typing.Optional[int]

        default_emotion : typing.Optional[str]

        emotion_adaptation : typing.Optional[bool]

        is_default : typing.Optional[bool]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        VoiceProfileResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.update_voice_profile(
                organization_id="organization_id",
                profile_id="profile_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_voice_profile(
            organization_id,
            profile_id,
            name=name,
            tts_provider=tts_provider,
            tts_model=tts_model,
            voice_id=voice_id,
            personality=personality,
            system_prompt=system_prompt,
            trigger_config=trigger_config,
            stt_provider=stt_provider,
            stt_model=stt_model,
            emotion_provider=emotion_provider,
            emotion_model=emotion_model,
            emotion_enabled=emotion_enabled,
            model_key=model_key,
            max_response_tokens=max_response_tokens,
            temperature=temperature,
            context_window_minutes=context_window_minutes,
            max_context_tokens=max_context_tokens,
            default_emotion=default_emotion,
            emotion_adaptation=emotion_adaptation,
            is_default=is_default,
            request_options=request_options,
        )
        return _response.data

    async def delete_voice_profile(
        self, organization_id: str, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Delete a voice profile.

        Parameters
        ----------
        organization_id : str

        profile_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.meeting_buddy_voice_agent.delete_voice_profile(
                organization_id="organization_id",
                profile_id="profile_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_voice_profile(
            organization_id, profile_id, request_options=request_options
        )
        return _response.data
