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

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .listen_v1response_results_channels import ListenV1ResponseResultsChannels
from .listen_v1response_results_summary import ListenV1ResponseResultsSummary
from .listen_v1response_results_utterances import ListenV1ResponseResultsUtterances
from .shared_intents import SharedIntents
from .shared_sentiments import SharedSentiments
from .shared_topics import SharedTopics


class ListenV1ResponseResults(UniversalBaseModel):
    channels: ListenV1ResponseResultsChannels
    utterances: typing.Optional[ListenV1ResponseResultsUtterances] = None
    summary: typing.Optional[ListenV1ResponseResultsSummary] = None
    topics: typing.Optional[SharedTopics] = None
    intents: typing.Optional[SharedIntents] = None
    sentiments: typing.Optional[SharedSentiments] = None

    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
