import { Blueprint, Predicates } from 'optimal';
import Context from './Context';
import Routine from './Routine';
import CoreTool from './Tool';
export interface PipelineOptions {
    exit?: (code: number) => void;
}
export default class Pipeline<Ctx extends Context, Tool extends CoreTool<any>> extends Routine<Ctx, Tool, PipelineOptions> {
    constructor(tool: Tool, context: Ctx, options?: PipelineOptions);
    blueprint({ func }: Predicates): Blueprint<Required<PipelineOptions>>;
    /**
     * Execute all routines in order.
     */
    run<T>(initialValue?: T): Promise<any>;
    /**
     * Report the pipeline failure by writing a crash log.
     */
    reportCrash(error: Error): void;
}
//# sourceMappingURL=Pipeline.d.ts.map