import type { ZodType } from 'zod/v4'; import type { OrchestrationExecutionContext } from './context.js'; import type { Fail, Goto, NextStepDirective, Pause, Retry, Terminate } from './directives.js'; export interface Step = Record> { readonly name: string; readonly inputSchema?: ZodType; readonly timeoutMs?: number; run(input: TIn, ctx: OrchestrationExecutionContext): Promise>; } export interface StepResult { readonly output: TOut; readonly next: NextStepDirective; } export type Allowed = Goto | (Term extends true ? Terminate : never) | (CanFail extends true ? Fail : never) | ([PauseTo] extends [never] ? never : Pause) | Retry; export interface StepDefinition = Record> { readonly name: string; readonly next: readonly string[]; readonly terminal: boolean; readonly canFail: boolean; readonly pause?: { readonly signal: string; readonly resumeStep: string; }; readonly inputSchema?: ZodType; readonly timeoutMs?: number; run(input: unknown, ctx: OrchestrationExecutionContext): Promise; } export declare function defineStep = Record, const Next extends readonly string[] = readonly [], const Term extends boolean = false, const CanFail extends boolean = false, const PauseDecl extends { signal: string; resumeStep: string; } | undefined = undefined>(def: { name: string; next?: Next; terminal?: Term; canFail?: CanFail; pause?: PauseDecl; inputSchema?: ZodType; timeoutMs?: number; run: (input: TIn, ctx: OrchestrationExecutionContext) => Promise>; }): StepDefinition;