"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
# @generated-id: 20a423148117

from __future__ import annotations
from .activitytaskcompletedresponse import (
    ActivityTaskCompletedResponse,
    ActivityTaskCompletedResponseTypedDict,
)
from .activitytaskfailedresponse import (
    ActivityTaskFailedResponse,
    ActivityTaskFailedResponseTypedDict,
)
from .activitytaskretryingresponse import (
    ActivityTaskRetryingResponse,
    ActivityTaskRetryingResponseTypedDict,
)
from .activitytaskstartedresponse import (
    ActivityTaskStartedResponse,
    ActivityTaskStartedResponseTypedDict,
)
from .customtaskcanceledresponse import (
    CustomTaskCanceledResponse,
    CustomTaskCanceledResponseTypedDict,
)
from .customtaskcompletedresponse import (
    CustomTaskCompletedResponse,
    CustomTaskCompletedResponseTypedDict,
)
from .customtaskfailedresponse import (
    CustomTaskFailedResponse,
    CustomTaskFailedResponseTypedDict,
)
from .customtaskinprogressresponse import (
    CustomTaskInProgressResponse,
    CustomTaskInProgressResponseTypedDict,
)
from .customtaskstartedresponse import (
    CustomTaskStartedResponse,
    CustomTaskStartedResponseTypedDict,
)
from .customtasktimedoutresponse import (
    CustomTaskTimedOutResponse,
    CustomTaskTimedOutResponseTypedDict,
)
from .workflowexecutioncanceledresponse import (
    WorkflowExecutionCanceledResponse,
    WorkflowExecutionCanceledResponseTypedDict,
)
from .workflowexecutioncompletedresponse import (
    WorkflowExecutionCompletedResponse,
    WorkflowExecutionCompletedResponseTypedDict,
)
from .workflowexecutioncontinuedasnewresponse import (
    WorkflowExecutionContinuedAsNewResponse,
    WorkflowExecutionContinuedAsNewResponseTypedDict,
)
from .workflowexecutionfailedresponse import (
    WorkflowExecutionFailedResponse,
    WorkflowExecutionFailedResponseTypedDict,
)
from .workflowexecutionstartedresponse import (
    WorkflowExecutionStartedResponse,
    WorkflowExecutionStartedResponseTypedDict,
)
from .workflowtaskfailedresponse import (
    WorkflowTaskFailedResponse,
    WorkflowTaskFailedResponseTypedDict,
)
from .workflowtasktimedoutresponse import (
    WorkflowTaskTimedOutResponse,
    WorkflowTaskTimedOutResponseTypedDict,
)
from mistralai.client.types import (
    BaseModel,
    Nullable,
    OptionalNullable,
    UNSET,
    UNSET_SENTINEL,
)
from pydantic import model_serializer
from typing import List, Union
from typing_extensions import NotRequired, TypeAliasType, TypedDict


ListWorkflowEventResponseEventTypedDict = TypeAliasType(
    "ListWorkflowEventResponseEventTypedDict",
    Union[
        WorkflowExecutionStartedResponseTypedDict,
        WorkflowExecutionCompletedResponseTypedDict,
        WorkflowExecutionFailedResponseTypedDict,
        WorkflowExecutionCanceledResponseTypedDict,
        WorkflowExecutionContinuedAsNewResponseTypedDict,
        WorkflowTaskTimedOutResponseTypedDict,
        WorkflowTaskFailedResponseTypedDict,
        CustomTaskStartedResponseTypedDict,
        CustomTaskInProgressResponseTypedDict,
        CustomTaskCompletedResponseTypedDict,
        CustomTaskFailedResponseTypedDict,
        CustomTaskTimedOutResponseTypedDict,
        CustomTaskCanceledResponseTypedDict,
        ActivityTaskStartedResponseTypedDict,
        ActivityTaskCompletedResponseTypedDict,
        ActivityTaskRetryingResponseTypedDict,
        ActivityTaskFailedResponseTypedDict,
    ],
)


ListWorkflowEventResponseEvent = TypeAliasType(
    "ListWorkflowEventResponseEvent",
    Union[
        WorkflowExecutionStartedResponse,
        WorkflowExecutionCompletedResponse,
        WorkflowExecutionFailedResponse,
        WorkflowExecutionCanceledResponse,
        WorkflowExecutionContinuedAsNewResponse,
        WorkflowTaskTimedOutResponse,
        WorkflowTaskFailedResponse,
        CustomTaskStartedResponse,
        CustomTaskInProgressResponse,
        CustomTaskCompletedResponse,
        CustomTaskFailedResponse,
        CustomTaskTimedOutResponse,
        CustomTaskCanceledResponse,
        ActivityTaskStartedResponse,
        ActivityTaskCompletedResponse,
        ActivityTaskRetryingResponse,
        ActivityTaskFailedResponse,
    ],
)


class ListWorkflowEventResponseTypedDict(TypedDict):
    events: List[ListWorkflowEventResponseEventTypedDict]
    r"""List of workflow events."""
    next_cursor: NotRequired[Nullable[str]]
    r"""Cursor for pagination."""


class ListWorkflowEventResponse(BaseModel):
    events: List[ListWorkflowEventResponseEvent]
    r"""List of workflow events."""

    next_cursor: OptionalNullable[str] = UNSET
    r"""Cursor for pagination."""

    @model_serializer(mode="wrap")
    def serialize_model(self, handler):
        optional_fields = set(["next_cursor"])
        nullable_fields = set(["next_cursor"])
        serialized = handler(self)
        m = {}

        for n, f in type(self).model_fields.items():
            k = f.alias or n
            val = serialized.get(k, serialized.get(n))
            is_nullable_and_explicitly_set = (
                k in nullable_fields
                and (self.__pydantic_fields_set__.intersection({n}))  # pylint: disable=no-member
            )

            if val != UNSET_SENTINEL:
                if (
                    val is not None
                    or k not in optional_fields
                    or is_nullable_and_explicitly_set
                ):
                    m[k] = val

        return m
