# 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 .final_scores import FinalScores
from .grammar_activity_output import GrammarActivityOutput
from .initial_scores import InitialScores
from .merging_activity_output import MergingActivityOutput
from .parameters import Parameters
from .parser_response import ParserResponse
from .sentence_length_activity_output import SentenceLengthActivityOutput
from .sentence_structure_output import SentenceStructureOutput
from .simple_vocab_output import SimpleVocabOutput
from .style_guide_output import StyleGuideOutput
from .term_replace_activity_output import TermReplaceActivityOutput
from .tone_check_output import ToneCheckOutput
from .workflow_error import WorkflowError


class HeliosOneWorkflowOutput(UniversalBaseModel):
    created_at: str = pydantic.Field()
    """
    The date and time the workflow was created
    """

    errors: typing.Optional[typing.List[WorkflowError]] = pydantic.Field(default=None)
    """
    The errors that occurred during the workflow
    """

    initial_scores: typing.Optional[InitialScores] = pydantic.Field(default=None)
    """
    The initial scores of the workflow
    """

    final_scores: typing.Optional[FinalScores] = pydantic.Field(default=None)
    """
    The final scores of the workflow
    """

    input_file: str = pydantic.Field()
    """
    The path to the input file
    """

    parameters: typing.Optional[Parameters] = pydantic.Field(default=None)
    """
    The parameters used to run the workflow
    """

    run_id: str = pydantic.Field()
    """
    The Temporal workflow run ID
    """

    workflow_id: str = pydantic.Field()
    """
    The Temporal workflow ID
    """

    grammar_result: typing.Optional[GrammarActivityOutput] = pydantic.Field(default=None)
    """
    The result of the grammar activity
    """

    merging_result: typing.Optional[MergingActivityOutput] = pydantic.Field(default=None)
    """
    The result of the merging activity
    """

    parser_result: typing.Optional[ParserResponse] = pydantic.Field(default=None)
    """
    The result of the parser activity
    """

    sentence_length_result: typing.Optional[SentenceLengthActivityOutput] = pydantic.Field(default=None)
    """
    The result of the sentence length activity
    """

    sentence_structure_result: typing.Optional[SentenceStructureOutput] = pydantic.Field(default=None)
    """
    The result of the sentence structure activity
    """

    simple_vocabulary_result: typing.Optional[SimpleVocabOutput] = pydantic.Field(default=None)
    """
    The result of the simple vocabulary activity
    """

    tone_result: typing.Optional[ToneCheckOutput] = pydantic.Field(default=None)
    """
    The result of the tone activity
    """

    style_guide_result: typing.Optional[StyleGuideOutput] = pydantic.Field(default=None)
    """
    The result of the style guide activity
    """

    term_replace_result: typing.Optional[TermReplaceActivityOutput] = pydantic.Field(default=None)
    """
    The result of the terminology activity
    """

    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
