/// <reference types="node" />
import { SuiteConfig } from "./config";
import { FlagpoleExecutionOptions } from "../flagpoleexecutionoptions";
export declare enum SuiteExecutionExitCode {
    success = 0,
    failure = 1
}
export declare class SuiteExecutionResult {
    get output(): string[];
    get exitCode(): number;
    protected _output: string[];
    protected _exitCode: number;
    constructor(output: string[], exitCode: number);
    toString(): string;
}
export declare class SuiteExecution {
    protected _result: SuiteExecutionResult | null;
    protected _started: number | null;
    protected _finished: number | null;
    protected _subscribers: Function[];
    protected _finally: Function[];
    protected _output: string[];
    protected _finishedPromise: Promise<SuiteExecutionResult>;
    protected _finishedResolver: Function;
    get result(): Promise<SuiteExecutionResult>;
    get exitCode(): number | null;
    get output(): string[];
    static executePath(filePath: string, opts: FlagpoleExecutionOptions): SuiteExecution;
    static executeSuite(config: SuiteConfig): SuiteExecution;
    constructor();
    subscribe(callback: (output: string, execution: SuiteExecution) => void): void;
    finally(callback: (execution: SuiteExecution) => void): void;
    toString(): string;
    executePath(filePath: string, opts: FlagpoleExecutionOptions): Promise<SuiteExecutionResult>;
    executeSuite(config: SuiteConfig): Promise<SuiteExecutionResult>;
    protected _execute(filePath: string, opts: FlagpoleExecutionOptions): Promise<SuiteExecutionResult>;
    private _executeWithExec;
    private _executeWithSpawn;
    private _executeWithFork;
    protected _logLine(data: string | Buffer): void;
}
export declare class SuiteExecutionInline extends SuiteExecution {
    static executePath(filePath: string, opts: FlagpoleExecutionOptions): SuiteExecutionInline;
    static executeSuite(config: SuiteConfig): SuiteExecutionInline;
    protected _execute(filePath: string, opts: FlagpoleExecutionOptions): Promise<SuiteExecutionResult>;
}
