import { TaskManagerOptions, TaskCallback, RendererContract } from '../Contracts';
/**
 * Exposes the API to create a group of tasks and run them in sequence
 */
export declare class TaskManager {
    private testing;
    /**
     * Options
     */
    private options;
    /**
     * The renderer to use for rendering tasks. Automatically decided
     */
    private renderer;
    /**
     * A set of created tasks
     */
    private tasks;
    /**
     * State of the tasks manager
     */
    state: 'idle' | 'running' | 'succeeded' | 'failed';
    /**
     * Reference to the error raised by the task callback (if any)
     */
    error?: any;
    constructor(options?: Partial<TaskManagerOptions>, testing?: boolean);
    /**
     * Instantiates the tasks renderer
     */
    private instantiateRenderer;
    /**
     * Run a given task. The underlying code assumes that tasks are
     * executed in sequence.
     */
    private runTask;
    /**
     * Register a new task
     */
    add(title: string, callback: TaskCallback): this;
    /**
     * Define a custom logging renderer. Logs to "stdout" and "stderr"
     * by default
     */
    useRenderer(renderer: RendererContract): this;
    /**
     * Run tasks
     */
    run(): Promise<void>;
}
