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

import typing
from pydantic import Field

from .node_execution_fulfilled_event import NodeExecutionFulfilledEvent
from .node_execution_initiated_event import NodeExecutionInitiatedEvent
from .node_execution_paused_event import NodeExecutionPausedEvent
from .node_execution_rejected_event import NodeExecutionRejectedEvent
from .node_execution_resumed_event import NodeExecutionResumedEvent
from .node_execution_streaming_event import NodeExecutionStreamingEvent
from .workflow_execution_fulfilled_event import WorkflowExecutionFulfilledEvent
from .workflow_execution_initiated_event import WorkflowExecutionInitiatedEvent
from .workflow_execution_paused_event import WorkflowExecutionPausedEvent
from .workflow_execution_rejected_event import WorkflowExecutionRejectedEvent
from .workflow_execution_resumed_event import WorkflowExecutionResumedEvent
from .workflow_execution_snapshotted_event import WorkflowExecutionSnapshottedEvent
from .workflow_execution_streaming_event import WorkflowExecutionStreamingEvent

WorkflowEvent = typing.Annotated[
    typing.Union[
        NodeExecutionInitiatedEvent,
        NodeExecutionStreamingEvent,
        NodeExecutionFulfilledEvent,
        NodeExecutionRejectedEvent,
        NodeExecutionPausedEvent,
        NodeExecutionResumedEvent,
        WorkflowExecutionInitiatedEvent,
        WorkflowExecutionStreamingEvent,
        WorkflowExecutionRejectedEvent,
        WorkflowExecutionFulfilledEvent,
        WorkflowExecutionPausedEvent,
        WorkflowExecutionResumedEvent,
        WorkflowExecutionSnapshottedEvent,
    ],
    Field(discriminator="name")
]
