import { EventEmitter } from 'events'; import { Step, StepExecutionContext } from '../types'; import { StepExecutionResult } from '../step-executors'; /** * Event types emitted by the FlowExecutor */ export declare enum FlowEventType { FLOW_START = "flow:start", FLOW_COMPLETE = "flow:complete", FLOW_ERROR = "flow:error", STEP_START = "step:start", STEP_COMPLETE = "step:complete", STEP_ERROR = "step:error", STEP_SKIP = "step:skip", DEPENDENCY_RESOLVED = "dependency:resolved" } /** * Base interface for all flow events */ export interface FlowEvent { timestamp: number; type: FlowEventType; } /** * Flow start event */ export interface FlowStartEvent extends FlowEvent { type: FlowEventType.FLOW_START; flowName: string; orderedSteps: string[]; } /** * Flow complete event */ export interface FlowCompleteEvent extends FlowEvent { type: FlowEventType.FLOW_COMPLETE; flowName: string; results: Record; duration: number; } /** * Flow error event */ export interface FlowErrorEvent extends FlowEvent { type: FlowEventType.FLOW_ERROR; flowName: string; error: Error; duration: number; } /** * Step start event */ export interface StepStartEvent extends FlowEvent { type: FlowEventType.STEP_START; stepName: string; stepType: string; context?: Record; } /** * Step complete event */ export interface StepCompleteEvent extends FlowEvent { type: FlowEventType.STEP_COMPLETE; stepName: string; stepType: string; result: any; duration: number; } /** * Step error event */ export interface StepErrorEvent extends FlowEvent { type: FlowEventType.STEP_ERROR; stepName: string; stepType: string; error: Error; duration: number; } /** * Step skip event */ export interface StepSkipEvent extends FlowEvent { type: FlowEventType.STEP_SKIP; stepName: string; reason: string; } /** * Dependency resolved event */ export interface DependencyResolvedEvent extends FlowEvent { type: FlowEventType.DEPENDENCY_RESOLVED; orderedSteps: string[]; } /** * Configuration options for the flow event emitter */ export interface FlowEventOptions { /** Whether to emit flow-level events */ emitFlowEvents?: boolean; /** Whether to emit step-level events */ emitStepEvents?: boolean; /** Whether to emit dependency resolution events */ emitDependencyEvents?: boolean; /** Whether to include result details in events */ includeResults?: boolean; /** Whether to include context details in events */ includeContext?: boolean; } /** * Default event options */ export declare const DEFAULT_EVENT_OPTIONS: FlowEventOptions; /** * EventEmitter for FlowExecutor * Emits events during flow execution */ export declare class FlowExecutorEvents extends EventEmitter { private options; constructor(options?: Partial); /** * Update event options */ updateOptions(options: Partial): void; /** * Emit flow start event */ emitFlowStart(flowName: string, orderedSteps: string[]): void; /** * Emit flow complete event */ emitFlowComplete(flowName: string, results: Map, startTime: number): void; /** * Emit flow error event */ emitFlowError(flowName: string, error: Error, startTime: number): void; /** * Emit step start event */ emitStepStart(step: Step, executionContext: StepExecutionContext, extraContext?: Record): void; /** * Emit step complete event */ emitStepComplete(step: Step, result: StepExecutionResult, startTime: number): void; /** * Emit step error event */ emitStepError(step: Step, error: Error, startTime: number): void; /** * Emit step skip event */ emitStepSkip(step: Step, reason: string): void; /** * Emit dependency resolved event */ emitDependencyResolved(orderedSteps: string[]): void; /** * Helper to determine step type */ private getStepType; }