import type { BaseNodeConfig, RetryConfig, WorkflowContext, WorkflowNode } from "../types.js"; export interface LoopContext { iteration: number; totalIterations: number; previousResults: unknown[]; isFirstIteration: boolean; isLastAllowedIteration: boolean; } /** Options accepted by loop. */ export interface LoopOptions extends Omit { while: (context: WorkflowContext, loop: LoopContext) => boolean | Promise; steps: WorkflowNode[] | ((context: WorkflowContext, loop: LoopContext) => WorkflowNode[]); maxIterations?: number; onMaxIterations?: (context: WorkflowContext, loop: LoopContext) => Record | Promise>; onComplete?: (context: WorkflowContext, loop: LoopContext) => Record | Promise>; checkpoint?: boolean; retry?: RetryConfig; timeout?: string | number; iterationTimeout?: string | number; skip?: (context: WorkflowContext) => boolean | Promise; delay?: number | string; } export interface LoopNodeConfig { type: "loop"; description?: string; while: LoopOptions["while"]; steps: LoopOptions["steps"]; maxIterations: number; onMaxIterations?: LoopOptions["onMaxIterations"]; onComplete?: LoopOptions["onComplete"]; checkpoint: boolean; retry?: RetryConfig; timeout?: string | number; iterationTimeout?: string | number; skip?: LoopOptions["skip"]; delay?: number | string; } /** Create a loop workflow step. */ export declare function loop(id: string, options: LoopOptions): WorkflowNode; /** Create a do-while workflow loop. */ export declare function doWhile(id: string, options: Omit & { until: (context: WorkflowContext, loop: LoopContext) => boolean | Promise; }): WorkflowNode; /** Create a fixed-count workflow loop. */ export declare function times(id: string, count: number, steps: WorkflowNode[], options?: Omit): WorkflowNode; //# sourceMappingURL=loop.d.ts.map