import { Run } from '../../context.js'; import { ZodSchema, z } from 'zod'; import { Serializable } from '../../internals/serializable.js'; import { E as Emitter, C as Callback } from '../../emitter-l0W9gC1A.js'; import { FrameworkError } from '../../errors.js'; import '../../internals/helpers/promise.js'; import '../../internals/types.js'; import '../../internals/helpers/guards.js'; interface WorkflowStepResponse { update?: Partial>; next?: FlowStepName; } interface WorkflowRun { result: z.output; steps: WorkflowStepRes[]; state: z.output; } interface WorkflowRunOptions { start?: K; signal?: AbortSignal; } interface WorkflowStepDef { schema: T; handler: WorkflowStepHandler; } interface WorkflowStepRes { name: K; state: z.output; } interface WorkflowRunContext { steps: WorkflowStepRes[]; signal: AbortSignal; abort: (reason?: Error) => void; } type WorkflowStepHandler = (state: z.output, context: WorkflowRunContext) => Promise> | WorkflowStepResponse; interface WorkflowEvents { start: Callback<{ step: K; run: WorkflowRun; }>; error: Callback<{ step: K; error: Error; run: WorkflowRun; }>; success: Callback<{ step: K; response: WorkflowStepResponse; run: WorkflowRun; }>; } interface FlowInput { name?: string; schema: TS; outputSchema?: TS2; } type ReservedStep = typeof Workflow.START | typeof Workflow.NEXT | typeof Workflow.PREV | typeof Workflow.END | typeof Workflow.SELF; type FlowStepName = K | ReservedStep; declare class WorkflowError extends FrameworkError { constructor(message: string, extra?: { run?: WorkflowRun; errors?: Error[]; }); } declare class Workflow extends Serializable { protected readonly input: FlowInput; static readonly START = "__start__"; static readonly SELF = "__self__"; static readonly PREV = "__prev__"; static readonly NEXT = "__next__"; static readonly END = "__end__"; readonly emitter: Emitter>; protected readonly steps: Map>; protected startStep: TKeys | undefined; constructor(input: FlowInput); getSteps(): TKeys[]; get name(): string; get schemas(): { schema: TInput; outputSchema?: TOutput | undefined; }; addStep(name: L, handler: WorkflowStepHandler): Workflow; addStep(name: L, flow: Workflow.pipeable): Workflow; addStrictStep(name: L, schema: TI2, handler: WorkflowStepHandler): Workflow; addStrictStep(name: L, schema: TI2, flow: Workflow.pipeable, TFlow>): Workflow; protected _addStep(name: L, schemaOrStep: TI2 | WorkflowStepHandler | AnyWorkflowFlow, stepOrEmpty?: WorkflowStepHandler | AnyWorkflowFlow): Workflow; setStart(name: TKeys): this; run(state: z.input, options?: WorkflowRunOptions): Run, this, readonly [z.input, WorkflowRunOptions]>; delStep(name: L): Workflow>; asStep(overrides: { input?: (input: z.output) => z.output | z.input; output?: (output: z.output) => z.output | z.input; start?: TKeys; next?: FlowStepName; }): WorkflowStepHandler; protected findStep(current: TKeys): { prev: TKeys; current: TKeys; next: TKeys; }; createSnapshot(): { input: Omit, "schema" | "outputSchema">; emitter: Emitter>; startStep: TKeys | undefined; steps: Map>; }; loadSnapshot(snapshot: ReturnType): void; } declare namespace Workflow { type pipeable = Workflow.state extends Workflow.input ? T2 : never; type input = T extends Workflow ? z.input : never; type state = T extends Workflow ? z.output : never; type output = T extends Workflow ? z.output : never; type run = T extends Workflow ? WorkflowRun : never; } type AnyWorkflowFlow = Workflow; export { type AnyWorkflowFlow, type FlowStepName, Workflow, WorkflowError, type WorkflowEvents, type WorkflowRun, type WorkflowRunContext, type WorkflowRunOptions, type WorkflowStepDef, type WorkflowStepHandler, type WorkflowStepRes, type WorkflowStepResponse };