import { Readable, Writable, Duplex } from 'stream';
import Config from '../Config';
export type ValidateArgsFunction = (args: Array<string>, dryRun: boolean) => string | undefined;
export type ScriptFunction = (config: Config, args: Array<string>) => Promise<void>;
export declare const runScript: (f: ScriptFunction, argDescription?: string, argValidator?: ValidateArgsFunction) => void;
export interface Pipeline {
    source?: Readable;
    transforms?: Array<Duplex>;
    sink?: Writable;
}
export type PipeLifecycleFunction = (config: Config, args: Array<string>, context: object, pipeline: Pipeline) => Promise<void>;
export type PipelineFactory = (config: Config, args: Array<string>, context: object) => Promise<Pipeline>;
export declare const runPipes: (setup: PipeLifecycleFunction, factory: PipelineFactory, teardown?: PipeLifecycleFunction, argDescription?: string, argValidator?: ValidateArgsFunction) => void;
