import type { Bucket, GetBucketObjectResponse } from "../bucket.js"; import type { EventEnvelope } from "../event.js"; import type { Schedule } from "../schedule.js"; import type { WorkflowExecutionContext } from "../workflow.js"; import type { BucketMethod, BucketOperation, EntityOperation, QueueOperation, SearchOperation, SocketMethod, SocketOperation } from "./calls.js"; import type { SignalTarget } from "./signal.js"; export interface BaseEvent { type: T; id: string; timestamp: string; } /** * Common fields for events that {@link Eventual} actives with in order semantics. */ export interface CallEventResultBase extends Omit, "id"> { seq: number; } export interface CallEventBase { type: T; seq: number; } /** * Workflow Event Types * * The numeric ID is also used to determine display order. * * 0-9 reserved * 10 - Workflow started * 15 - Workflow run stated * 16 > 19 - Padding * 20 - Call Event * 21-23 - Open * 24 - Signal Received * 25-49 - Open * 50 > 79 (current max: 61) - Completed Events * 80 - Workflow Run Completed * 81 > 89 - Padding * 90 - Workflow Timed Out * 91 - Workflow Succeeded * 92 - Workflow Failed */ export declare enum WorkflowEventType { BucketRequestFailed = 60, BucketRequestSucceeded = 61, CallEvent = 20, ChildWorkflowSucceeded = 50, ChildWorkflowFailed = 51, EntityRequestFailed = 52, EntityRequestSucceeded = 53, QueueRequestSucceeded = 56, QueueRequestFailed = 64, SearchRequestSucceeded = 62, SearchRequestFailed = 63, SignalReceived = 24, SocketRequestFailed = 65, SocketRequestSucceeded = 66, TaskSucceeded = 46, TaskFailed = 57, TaskHeartbeatTimedOut = 58, TimerCompleted = 59, TransactionRequestFailed = 54, TransactionRequestSucceeded = 55, WorkflowSucceeded = 95, WorkflowFailed = 96, WorkflowStarted = 10, WorkflowRunCompleted = 80, WorkflowRunStarted = 15, WorkflowTimedOut = 90 } export declare enum WorkflowCallHistoryType { BucketRequest = 0, QueueRequest = 10, ChildWorkflowScheduled = 1, EntityRequest = 2, EventsEmitted = 3, SearchRequest = 4, SignalSent = 5, SocketRequest = 11, TaskScheduled = 7, TimerScheduled = 8, TransactionRequest = 9 } /** * Events generated by the engine that represent the in-order state of the workflow. */ export type WorkflowEvent = HistoryEvent | WorkflowRunCompleted | WorkflowSucceeded | WorkflowFailed | WorkflowStarted; /** * Events generated by the workflow to maintain deterministic executions. */ export type WorkflowCallHistoryEvent = BucketRequest | ChildWorkflowScheduled | SearchRequest | EntityRequest | EventsEmitted | QueueRequest | SignalSent | SocketRequest | TaskScheduled | TimerScheduled | TransactionRequest; /** * Events generated outside of the interpreter which progress the workflow. */ export type CompletionEvent = BucketRequestSucceeded | BucketRequestFailed | ChildWorkflowFailed | ChildWorkflowSucceeded | EntityRequestFailed | EntityRequestSucceeded | QueueRequestSucceeded | QueueRequestFailed | SearchRequestSucceeded | SearchRequestFailed | SignalReceived | SocketRequestFailed | SocketRequestSucceeded | TaskFailed | TaskHeartbeatTimedOut | TaskSucceeded | TimerCompleted | TransactionRequestSucceeded | TransactionRequestFailed | WorkflowTimedOut | WorkflowRunStarted; /** * All events which can be input into the workflow. */ export type WorkflowInputEvent = HistoryEvent | WorkflowStarted; export declare const isCompletionEvent: (a: any) => a is BucketRequestFailed | ChildWorkflowFailed | ChildWorkflowSucceeded | EntityRequestFailed | EntityRequestSucceeded | QueueRequestSucceeded | QueueRequestFailed | SearchRequestSucceeded | SearchRequestFailed | SocketRequestFailed | SocketRequestSucceeded | TaskFailed | TaskHeartbeatTimedOut | TaskSucceeded | TimerCompleted | TransactionRequestSucceeded | TransactionRequestFailed | WorkflowTimedOut | WorkflowRunStarted | BucketRequestSucceeded | SignalReceived; /** * Events used by the workflow to replay an execution. */ export type HistoryEvent = CompletionEvent | CallEvent; export declare function isHistoryEvent(event: WorkflowEvent): event is HistoryEvent; /** * Events that we save into history. */ export type HistoryStateEvent = HistoryEvent | WorkflowStarted | WorkflowSucceeded | WorkflowFailed; export declare function isHistoryStateEvent(event: WorkflowEvent): event is HistoryStateEvent; export declare function isCallEvent(event: WorkflowEvent): event is CallEvent; export interface CallEvent extends Omit, "id"> { event: E; } export interface WorkflowStarted extends BaseEvent { /** * Name of the workflow to execute. */ workflowName: string; /** * Input payload for the workflow function. */ input?: any; /** * Optional ISO timestamp after which the workflow should timeout. */ timeoutTime?: string; context: Omit; } export type WorkflowRunStarted = BaseEvent; export interface TaskScheduled extends CallEventBase { name: string; input?: any; } export interface TaskSucceeded extends CallEventResultBase { result: any; } export interface TaskFailed extends CallEventResultBase { error: string; message?: string; } export type TaskHeartbeatTimedOut = CallEventResultBase; export type WorkflowRunCompleted = BaseEvent; export interface WorkflowSucceeded extends BaseEvent { output: any; } export interface WorkflowFailed extends BaseEvent { error: string; message: string; } export interface ChildWorkflowScheduled extends CallEventBase { name: string; input?: any; } export interface ChildWorkflowSucceeded extends CallEventResultBase { result: any; } export interface ChildWorkflowFailed extends CallEventResultBase { error: string; message: string; } export declare function isWorkflowStarted(event: WorkflowEvent): event is WorkflowStarted; export declare function isWorkflowRunStarted(event: WorkflowEvent): event is WorkflowRunStarted; export declare function isTaskScheduled(event: WorkflowCallHistoryEvent): event is TaskScheduled; export declare function isTaskSucceeded(event: WorkflowEvent): event is TaskSucceeded; export declare function isTaskFailed(event: WorkflowEvent): event is TaskFailed; export declare function isTaskHeartbeatTimedOut(event: WorkflowEvent): event is TaskHeartbeatTimedOut; export interface QueueRequest extends CallEventBase { type: WorkflowCallHistoryType.QueueRequest; operation: QueueOperation; } export interface QueueRequestSucceeded extends CallEventResultBase { name?: string; operation: QueueOperation["operation"]; result: any; } export interface QueueRequestFailed extends CallEventResultBase { operation: QueueOperation["operation"]; name?: string; error: string; message: string; } export declare function isQueueRequest(event: WorkflowCallHistoryEvent): event is QueueRequest; export declare function isQueueRequestSucceeded(event: WorkflowEvent): event is QueueRequestSucceeded; export declare function isQueueRequestFailed(event: WorkflowEvent): event is QueueRequestFailed; export interface EntityRequest extends CallEventBase { operation: EntityOperation; } export interface EntityRequestSucceeded extends CallEventResultBase { name?: string; operation: EntityOperation["operation"]; result: any; } export interface EntityRequestFailed extends CallEventResultBase { operation: EntityOperation["operation"]; name?: string; error: string; message: string; } export declare function isEntityRequest(event: WorkflowCallHistoryEvent): event is EntityRequest; export declare function isEntityRequestSucceeded(event: WorkflowEvent): event is EntityRequestSucceeded; export declare function isEntityRequestFailed(event: WorkflowEvent): event is EntityRequestFailed; export interface TransactionRequest extends CallEventBase { input: any; transactionName: string; } export interface TransactionRequestSucceeded extends CallEventResultBase { result: any; } export interface TransactionRequestFailed extends CallEventResultBase { error: string; message: string; } export declare function isTransactionRequest(event: WorkflowCallHistoryEvent): event is TransactionRequest; export declare function isTransactionRequestSucceeded(event: WorkflowEvent): event is TransactionRequestSucceeded; export declare function isTransactionRequestFailed(event: WorkflowEvent): event is TransactionRequestFailed; export interface BucketRequest extends CallEventBase { operation: BucketOperation> | { bucketName: string; operation: "put"; key: string; }; } export interface BucketGetObjectSerializedResult extends Omit { body: string; base64Encoded: boolean; } export type BucketOperationResult = Op extends "get" ? undefined | BucketGetObjectSerializedResult : Awaited>; export interface BucketRequestSucceeded extends CallEventResultBase { name?: string; operation: Op; result: BucketOperationResult; } export declare function isBucketRequestSucceededOperationType(op: Op, event: BucketRequestSucceeded): event is BucketRequestSucceeded; export interface BucketRequestFailed extends CallEventResultBase { operation: BucketOperation["operation"]; name?: string; error: string; message: string; } export declare function isBucketRequest(event: WorkflowCallHistoryEvent): event is BucketRequest; export declare function isBucketRequestSucceeded(event: WorkflowEvent): event is BucketRequestSucceeded; export declare function isBucketRequestFailed(event: WorkflowEvent): event is BucketRequestFailed; export interface TimerScheduled extends CallEventBase { schedule: Schedule; } export declare function isTimerScheduled(event: WorkflowCallHistoryEvent): event is TimerScheduled; export interface TimerCompleted extends CallEventResultBase { result?: undefined; } export declare function isWorkflowRunCompleted(event: WorkflowEvent): event is WorkflowRunCompleted; export declare function isWorkflowSucceeded(event: WorkflowEvent): event is WorkflowSucceeded; export declare function isWorkflowFailed(event: WorkflowEvent): event is WorkflowFailed; export declare function isChildWorkflowScheduled(event: WorkflowCallHistoryEvent): event is ChildWorkflowScheduled; export declare function isChildWorkflowSucceeded(event: WorkflowEvent): event is ChildWorkflowSucceeded; export declare function isChildWorkflowFailed(event: WorkflowEvent): event is ChildWorkflowFailed; export declare function isTimerCompleted(event: WorkflowEvent): event is TimerCompleted; export declare const isWorkflowCompletedEvent: (a: any) => a is WorkflowSucceeded | WorkflowFailed; export interface SignalReceived extends BaseEvent { signalId: string; payload?: Payload; } export declare function isSignalReceived(event: WorkflowEvent): event is SignalReceived; export interface SignalSent extends CallEventBase { payload?: any; signalId: string; target: SignalTarget; } export declare function isSignalSent(event: WorkflowCallHistoryEvent): event is SignalSent; export interface EventsEmitted extends CallEventBase { events: EventEnvelope[]; } export declare function isEventsEmitted(event: WorkflowCallHistoryEvent): event is EventsEmitted; export interface SocketRequest extends CallEventBase { operation: SocketOperation> | { operation: "send"; socketName: string; connectionId: string; input: string; isBase64Encoded: boolean; }; } export interface SocketRequestSucceeded extends CallEventResultBase { name?: string; operation: SocketMethod; result: any; } export interface SocketRequestFailed extends CallEventResultBase { operation: SocketMethod; name?: string; error: string; message: string; } export declare function isSocketRequest(event: WorkflowCallHistoryEvent): event is SocketRequest; export declare function isSocketRequestSucceeded(event: WorkflowEvent): event is SocketRequestSucceeded; export declare function isSocketRequestFailed(event: WorkflowEvent): event is SocketRequestFailed; export interface SearchRequest extends CallEventBase { operation: SearchOperation; request: any; } export interface SearchRequestSucceeded extends CallEventResultBase { operation: SearchOperation; body: any; } export interface SearchRequestFailed extends CallEventResultBase { operation: SearchOperation; error: string; message: string; } export declare function isSearchRequest(event: WorkflowCallHistoryEvent): event is SearchRequest; export declare function isSearchRequestSucceeded(event: WorkflowEvent): event is SearchRequestSucceeded; export declare function isSearchRequestFailed(event: WorkflowEvent): event is SearchRequestFailed; export type WorkflowTimedOut = BaseEvent; export declare function isWorkflowTimedOut(event: WorkflowEvent): event is WorkflowTimedOut; export declare function assertEventType(event: any, type: T["type"]): asserts event is T; /** * Compute the ID of an event. * * Some events have a computed ID to save space. */ export declare function getEventId(event: WorkflowEvent): string; //# sourceMappingURL=workflow-events.d.ts.map