# 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.org_settings_response import OrgSettingsResponse
from .raw_client import AsyncRawMeetingBuddySettingsClient, RawMeetingBuddySettingsClient

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


class MeetingBuddySettingsClient:
    def __init__(self, *, client_wrapper: SyncClientWrapper):
        self._raw_client = RawMeetingBuddySettingsClient(client_wrapper=client_wrapper)

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

        Returns
        -------
        RawMeetingBuddySettingsClient
        """
        return self._raw_client

    def get_org_settings(self, *, request_options: typing.Optional[RequestOptions] = None) -> OrgSettingsResponse:
        """
        Get organization-level Meeting Buddy settings.

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

        Returns
        -------
        OrgSettingsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_settings.get_org_settings()
        """
        _response = self._raw_client.get_org_settings(request_options=request_options)
        return _response.data

    def update_org_settings(
        self,
        *,
        auto_share_link_in_chat: typing.Optional[bool] = OMIT,
        public_chat_enabled: typing.Optional[bool] = OMIT,
        public_chat_message_limit: typing.Optional[int] = OMIT,
        public_chat_model: typing.Optional[str] = OMIT,
        share_link_expiry_days: typing.Optional[int] = OMIT,
        chat_agent_enabled: typing.Optional[bool] = OMIT,
        chat_agent_name: typing.Optional[str] = OMIT,
        greeting_enabled: typing.Optional[bool] = OMIT,
        greeting_message: typing.Optional[str] = OMIT,
        farewell_enabled: typing.Optional[bool] = OMIT,
        farewell_include_summary: typing.Optional[bool] = OMIT,
        email_enabled: typing.Optional[bool] = OMIT,
        email_recipients: typing.Optional[str] = OMIT,
        email_custom_recipients: typing.Optional[typing.Sequence[str]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> OrgSettingsResponse:
        """
        Update organization-level Meeting Buddy settings.

        Parameters
        ----------
        auto_share_link_in_chat : typing.Optional[bool]

        public_chat_enabled : typing.Optional[bool]

        public_chat_message_limit : typing.Optional[int]

        public_chat_model : typing.Optional[str]

        share_link_expiry_days : typing.Optional[int]

        chat_agent_enabled : typing.Optional[bool]

        chat_agent_name : typing.Optional[str]

        greeting_enabled : typing.Optional[bool]

        greeting_message : typing.Optional[str]

        farewell_enabled : typing.Optional[bool]

        farewell_include_summary : typing.Optional[bool]

        email_enabled : typing.Optional[bool]

        email_recipients : typing.Optional[str]

        email_custom_recipients : typing.Optional[typing.Sequence[str]]

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

        Returns
        -------
        OrgSettingsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_settings.update_org_settings()
        """
        _response = self._raw_client.update_org_settings(
            auto_share_link_in_chat=auto_share_link_in_chat,
            public_chat_enabled=public_chat_enabled,
            public_chat_message_limit=public_chat_message_limit,
            public_chat_model=public_chat_model,
            share_link_expiry_days=share_link_expiry_days,
            chat_agent_enabled=chat_agent_enabled,
            chat_agent_name=chat_agent_name,
            greeting_enabled=greeting_enabled,
            greeting_message=greeting_message,
            farewell_enabled=farewell_enabled,
            farewell_include_summary=farewell_include_summary,
            email_enabled=email_enabled,
            email_recipients=email_recipients,
            email_custom_recipients=email_custom_recipients,
            request_options=request_options,
        )
        return _response.data


class AsyncMeetingBuddySettingsClient:
    def __init__(self, *, client_wrapper: AsyncClientWrapper):
        self._raw_client = AsyncRawMeetingBuddySettingsClient(client_wrapper=client_wrapper)

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

        Returns
        -------
        AsyncRawMeetingBuddySettingsClient
        """
        return self._raw_client

    async def get_org_settings(self, *, request_options: typing.Optional[RequestOptions] = None) -> OrgSettingsResponse:
        """
        Get organization-level Meeting Buddy settings.

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

        Returns
        -------
        OrgSettingsResponse
            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_settings.get_org_settings()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_org_settings(request_options=request_options)
        return _response.data

    async def update_org_settings(
        self,
        *,
        auto_share_link_in_chat: typing.Optional[bool] = OMIT,
        public_chat_enabled: typing.Optional[bool] = OMIT,
        public_chat_message_limit: typing.Optional[int] = OMIT,
        public_chat_model: typing.Optional[str] = OMIT,
        share_link_expiry_days: typing.Optional[int] = OMIT,
        chat_agent_enabled: typing.Optional[bool] = OMIT,
        chat_agent_name: typing.Optional[str] = OMIT,
        greeting_enabled: typing.Optional[bool] = OMIT,
        greeting_message: typing.Optional[str] = OMIT,
        farewell_enabled: typing.Optional[bool] = OMIT,
        farewell_include_summary: typing.Optional[bool] = OMIT,
        email_enabled: typing.Optional[bool] = OMIT,
        email_recipients: typing.Optional[str] = OMIT,
        email_custom_recipients: typing.Optional[typing.Sequence[str]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> OrgSettingsResponse:
        """
        Update organization-level Meeting Buddy settings.

        Parameters
        ----------
        auto_share_link_in_chat : typing.Optional[bool]

        public_chat_enabled : typing.Optional[bool]

        public_chat_message_limit : typing.Optional[int]

        public_chat_model : typing.Optional[str]

        share_link_expiry_days : typing.Optional[int]

        chat_agent_enabled : typing.Optional[bool]

        chat_agent_name : typing.Optional[str]

        greeting_enabled : typing.Optional[bool]

        greeting_message : typing.Optional[str]

        farewell_enabled : typing.Optional[bool]

        farewell_include_summary : typing.Optional[bool]

        email_enabled : typing.Optional[bool]

        email_recipients : typing.Optional[str]

        email_custom_recipients : typing.Optional[typing.Sequence[str]]

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

        Returns
        -------
        OrgSettingsResponse
            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_settings.update_org_settings()


        asyncio.run(main())
        """
        _response = await self._raw_client.update_org_settings(
            auto_share_link_in_chat=auto_share_link_in_chat,
            public_chat_enabled=public_chat_enabled,
            public_chat_message_limit=public_chat_message_limit,
            public_chat_model=public_chat_model,
            share_link_expiry_days=share_link_expiry_days,
            chat_agent_enabled=chat_agent_enabled,
            chat_agent_name=chat_agent_name,
            greeting_enabled=greeting_enabled,
            greeting_message=greeting_message,
            farewell_enabled=farewell_enabled,
            farewell_include_summary=farewell_include_summary,
            email_enabled=email_enabled,
            email_recipients=email_recipients,
            email_custom_recipients=email_custom_recipients,
            request_options=request_options,
        )
        return _response.data
