import { Observable } from 'rxjs';
import { Step } from '../models/step.model';
import { Connection } from '../models/connection.model';
import * as i0 from "@angular/core";
export interface ExecutionLog {
    timestamp: Date;
    stepId: number;
    stepName: string;
    type: 'start' | 'complete' | 'error' | 'log';
    message: string;
    data?: any;
}
export interface StepExecutionResult {
    stepId: number;
    success: boolean;
    output: any;
    error?: string;
}
export interface ExecutionContext {
    variables: {
        [key: string]: any;
    };
    results: {
        [stepId: number]: StepExecutionResult;
    };
}
export type ExecutionStatus = 'idle' | 'running' | 'paused' | 'completed' | 'error';
export declare class FlowExecutorService {
    private executionStatus$;
    private currentStepId$;
    private executionLogs$;
    private executionContext$;
    private stopExecution$;
    private pauseExecution$;
    executionStatus: Observable<ExecutionStatus>;
    currentStepId: Observable<number | null>;
    executionLogs: Observable<ExecutionLog[]>;
    executionContext: Observable<ExecutionContext>;
    constructor();
    executeFlow(steps: Step[], connections: Connection[]): Promise<void>;
    private executeStep;
    private executeStepByType;
    private executePromptStep;
    private executeAgentStep;
    private executeActionStep;
    private buildExecutionOrder;
    pause(): void;
    resume(): void;
    stop(): void;
    private waitForUnpause;
    private resetExecution;
    private addLog;
    private delay;
    getExecutionSummary(): Observable<{
        totalSteps: number;
        completedSteps: number;
        errors: number;
        duration: number;
    }>;
    static ɵfac: i0.ɵɵFactoryDeclaration<FlowExecutorService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<FlowExecutorService>;
}
//# sourceMappingURL=flow-executor.service.d.ts.map