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

import datetime as dt
import typing

from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
from ..types.action_items_overview_response import ActionItemsOverviewResponse
from ..types.active_session_summary import ActiveSessionSummary
from ..types.breakdown_response import BreakdownResponse
from ..types.decisions_response import DecisionsResponse
from ..types.duration_distribution_response import DurationDistributionResponse
from ..types.failure_analysis_response import FailureAnalysisResponse
from ..types.meeting_type_distribution_response import MeetingTypeDistributionResponse
from ..types.participants_response import ParticipantsResponse
from ..types.quality_metrics_response import QualityMetricsResponse
from ..types.sentiment_trends_response import SentimentTrendsResponse
from ..types.session_speaker_breakdown_response import SessionSpeakerBreakdownResponse
from ..types.speaker_stats_response import SpeakerStatsResponse
from ..types.summary_response import SummaryResponse
from ..types.topics_response import TopicsResponse
from ..types.transcription_stats_response import TranscriptionStatsResponse
from ..types.trends_response import TrendsResponse
from .raw_client import AsyncRawMeetingBuddyAnalyticsClient, RawMeetingBuddyAnalyticsClient


class MeetingBuddyAnalyticsClient:
    def __init__(self, *, client_wrapper: SyncClientWrapper):
        self._raw_client = RawMeetingBuddyAnalyticsClient(client_wrapper=client_wrapper)

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

        Returns
        -------
        RawMeetingBuddyAnalyticsClient
        """
        return self._raw_client

    def get_meeting_buddy_summary(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SummaryResponse:
        """
        Get dashboard summary with all key metrics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        SummaryResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_meeting_buddy_summary()
        """
        _response = self._raw_client.get_meeting_buddy_summary(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_active_sessions(
        self, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.List[ActiveSessionSummary]:
        """
        Get currently active meeting buddy sessions.

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

        Returns
        -------
        typing.List[ActiveSessionSummary]
            Successful Response

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

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

    def get_meeting_buddy_trends(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        granularity: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> TrendsResponse:
        """
        Get session trends over time.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

        granularity : typing.Optional[str]
            Bucketing: day, week, or month

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

        Returns
        -------
        TrendsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_meeting_buddy_trends()
        """
        _response = self._raw_client.get_meeting_buddy_trends(
            start_date=start_date, end_date=end_date, granularity=granularity, request_options=request_options
        )
        return _response.data

    def get_platform_breakdown(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> BreakdownResponse:
        """
        Get sessions grouped by platform.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        BreakdownResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_platform_breakdown()
        """
        _response = self._raw_client.get_platform_breakdown(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_status_breakdown(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> BreakdownResponse:
        """
        Get sessions grouped by status.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        BreakdownResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_status_breakdown()
        """
        _response = self._raw_client.get_status_breakdown(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_duration_distribution(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> DurationDistributionResponse:
        """
        Get session duration distribution histogram.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        DurationDistributionResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_duration_distribution()
        """
        _response = self._raw_client.get_duration_distribution(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_failure_analysis(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> FailureAnalysisResponse:
        """
        Get failure breakdown with error codes and rates.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        FailureAnalysisResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_failure_analysis()
        """
        _response = self._raw_client.get_failure_analysis(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_participant_stats(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        limit: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> ParticipantsResponse:
        """
        Get participant statistics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

        limit : typing.Optional[int]
            Max participants to return

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

        Returns
        -------
        ParticipantsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_participant_stats()
        """
        _response = self._raw_client.get_participant_stats(
            start_date=start_date, end_date=end_date, limit=limit, request_options=request_options
        )
        return _response.data

    def get_transcription_stats(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> TranscriptionStatsResponse:
        """
        Get transcription metrics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        TranscriptionStatsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_transcription_stats()
        """
        _response = self._raw_client.get_transcription_stats(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_speaker_stats(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SpeakerStatsResponse:
        """
        Get speaker talk-time analytics across all meetings.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        SpeakerStatsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_speaker_stats()
        """
        _response = self._raw_client.get_speaker_stats(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_session_speaker_breakdown(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> SessionSpeakerBreakdownResponse:
        """
        Get per-session speaker breakdown with silence tracking.

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

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

        Returns
        -------
        SessionSpeakerBreakdownResponse
            Successful Response

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

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

    def get_meeting_type_distribution(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> MeetingTypeDistributionResponse:
        """
        Get meeting type distribution from intelligence data.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        MeetingTypeDistributionResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_meeting_type_distribution()
        """
        _response = self._raw_client.get_meeting_type_distribution(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_sentiment_trends(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SentimentTrendsResponse:
        """
        Get sentiment trends over time from intelligence data.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        SentimentTrendsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_sentiment_trends()
        """
        _response = self._raw_client.get_sentiment_trends(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_action_items_overview(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> ActionItemsOverviewResponse:
        """
        Get action item health metrics across the organization.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        ActionItemsOverviewResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_action_items_overview()
        """
        _response = self._raw_client.get_action_items_overview(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_topics(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> TopicsResponse:
        """
        Get top topics aggregated from intelligence records.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        TopicsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_topics()
        """
        _response = self._raw_client.get_topics(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_decisions(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> DecisionsResponse:
        """
        Get decision tracking aggregated from intelligence records.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        DecisionsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_decisions()
        """
        _response = self._raw_client.get_decisions(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_quality_metrics(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> QualityMetricsResponse:
        """
        Get transcription and recording quality metrics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        QualityMetricsResponse
            Successful Response

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

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.meeting_buddy_analytics.get_quality_metrics()
        """
        _response = self._raw_client.get_quality_metrics(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data


class AsyncMeetingBuddyAnalyticsClient:
    def __init__(self, *, client_wrapper: AsyncClientWrapper):
        self._raw_client = AsyncRawMeetingBuddyAnalyticsClient(client_wrapper=client_wrapper)

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

        Returns
        -------
        AsyncRawMeetingBuddyAnalyticsClient
        """
        return self._raw_client

    async def get_meeting_buddy_summary(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SummaryResponse:
        """
        Get dashboard summary with all key metrics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        SummaryResponse
            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_analytics.get_meeting_buddy_summary()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_meeting_buddy_summary(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_active_sessions(
        self, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.List[ActiveSessionSummary]:
        """
        Get currently active meeting buddy sessions.

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

        Returns
        -------
        typing.List[ActiveSessionSummary]
            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_analytics.get_active_sessions()


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

    async def get_meeting_buddy_trends(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        granularity: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> TrendsResponse:
        """
        Get session trends over time.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

        granularity : typing.Optional[str]
            Bucketing: day, week, or month

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

        Returns
        -------
        TrendsResponse
            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_analytics.get_meeting_buddy_trends()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_meeting_buddy_trends(
            start_date=start_date, end_date=end_date, granularity=granularity, request_options=request_options
        )
        return _response.data

    async def get_platform_breakdown(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> BreakdownResponse:
        """
        Get sessions grouped by platform.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        BreakdownResponse
            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_analytics.get_platform_breakdown()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_platform_breakdown(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_status_breakdown(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> BreakdownResponse:
        """
        Get sessions grouped by status.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        BreakdownResponse
            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_analytics.get_status_breakdown()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_status_breakdown(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_duration_distribution(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> DurationDistributionResponse:
        """
        Get session duration distribution histogram.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        DurationDistributionResponse
            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_analytics.get_duration_distribution()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_duration_distribution(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_failure_analysis(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> FailureAnalysisResponse:
        """
        Get failure breakdown with error codes and rates.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        FailureAnalysisResponse
            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_analytics.get_failure_analysis()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_failure_analysis(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_participant_stats(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        limit: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> ParticipantsResponse:
        """
        Get participant statistics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

        limit : typing.Optional[int]
            Max participants to return

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

        Returns
        -------
        ParticipantsResponse
            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_analytics.get_participant_stats()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_participant_stats(
            start_date=start_date, end_date=end_date, limit=limit, request_options=request_options
        )
        return _response.data

    async def get_transcription_stats(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> TranscriptionStatsResponse:
        """
        Get transcription metrics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        TranscriptionStatsResponse
            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_analytics.get_transcription_stats()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_transcription_stats(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_speaker_stats(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SpeakerStatsResponse:
        """
        Get speaker talk-time analytics across all meetings.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        SpeakerStatsResponse
            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_analytics.get_speaker_stats()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_speaker_stats(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_session_speaker_breakdown(
        self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> SessionSpeakerBreakdownResponse:
        """
        Get per-session speaker breakdown with silence tracking.

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

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

        Returns
        -------
        SessionSpeakerBreakdownResponse
            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_analytics.get_session_speaker_breakdown(
                session_id="session_id",
            )


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

    async def get_meeting_type_distribution(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> MeetingTypeDistributionResponse:
        """
        Get meeting type distribution from intelligence data.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        MeetingTypeDistributionResponse
            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_analytics.get_meeting_type_distribution()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_meeting_type_distribution(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_sentiment_trends(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SentimentTrendsResponse:
        """
        Get sentiment trends over time from intelligence data.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        SentimentTrendsResponse
            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_analytics.get_sentiment_trends()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_sentiment_trends(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_action_items_overview(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> ActionItemsOverviewResponse:
        """
        Get action item health metrics across the organization.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        ActionItemsOverviewResponse
            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_analytics.get_action_items_overview()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_action_items_overview(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_topics(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> TopicsResponse:
        """
        Get top topics aggregated from intelligence records.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        TopicsResponse
            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_analytics.get_topics()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_topics(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_decisions(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> DecisionsResponse:
        """
        Get decision tracking aggregated from intelligence records.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        DecisionsResponse
            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_analytics.get_decisions()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_decisions(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_quality_metrics(
        self,
        *,
        start_date: typing.Optional[dt.datetime] = None,
        end_date: typing.Optional[dt.datetime] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> QualityMetricsResponse:
        """
        Get transcription and recording quality metrics.

        Parameters
        ----------
        start_date : typing.Optional[dt.datetime]
            Start of date range (UTC)

        end_date : typing.Optional[dt.datetime]
            End of date range (UTC)

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

        Returns
        -------
        QualityMetricsResponse
            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_analytics.get_quality_metrics()


        asyncio.run(main())
        """
        _response = await self._raw_client.get_quality_metrics(
            start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data
