/// <reference types="node" />
import { ResponseType } from "./response";
import { Scenario } from "./scenario";
import { URL } from 'url';
export declare enum SuiteStatusEvent {
    beforeAllExecute = 0,
    beforeEachExecute = 1,
    afterEachExecute = 2,
    afterAllExecute = 3,
    finished = 4
}
export declare class Suite {
    scenarios: Array<Scenario>;
    private _homeScore;
    readonly baseUrl: URL | null;
    readonly hasPassed: boolean;
    readonly hasFailed: boolean;
    readonly hasExecuted: boolean;
    readonly hasFinished: boolean;
    readonly totalDuration: number | null;
    readonly executionDuration: number | null;
    readonly title: string;
    protected _subscribers: Function[];
    protected _errorCallbacks: Function[];
    protected _successCallbacks: Function[];
    protected _failureCallbacks: Function[];
    protected _finallyCallbacks: Function[];
    protected _beforeAllCallbacks: Function[];
    protected _afterAllCallbacks: Function[];
    protected _beforeEachCallbacks: Function[];
    protected _afterEachCallbacks: Function[];
    protected _beforeAllPromise: Promise<void>;
    protected _beforeAllResolver: Function;
    protected _title: string;
    protected _baseUrl: URL | null;
    protected _timeSuiteInitialized: number;
    protected _timeSuiteExecuted: number | null;
    protected _timeSuiteFinished: number | null;
    protected _waitToExecute: boolean;
    protected _verifySslCert: boolean;
    constructor(title: string);
    subscribe(callback: Function): void;
    verifySslCert(verify: boolean): Suite;
    wait(bool?: boolean): Suite;
    print(exitAfterPrint?: boolean): void;
    scenario(title: string, type: ResponseType, opts: any): Scenario;
    json(title: string, opts?: any): Scenario;
    image(title: string, opts?: any): Scenario;
    video(title: string, opts?: any): Scenario;
    html(title: string, opts?: any): Scenario;
    stylesheet(title: string, opts?: any): Scenario;
    script(title: string, opts?: any): Scenario;
    resource(title: string, opts?: any): Scenario;
    browser(title: string, opts?: any): Scenario;
    extjs(title: string, opts?: any): Scenario;
    base(url: string | {}): Suite;
    buildUrl(path: string): string;
    execute(): Suite;
    beforeAll(callback: Function): Suite;
    beforeEach(callback: Function): Suite;
    afterEach(callback: Function): Suite;
    afterAll(callback: Function): Suite;
    catch(callback: Function): Suite;
    success(callback: Function): Suite;
    failure(callback: Function): Suite;
    finally(callback: Function): Suite;
    private _haveAllScenariosFinished;
    private _fireBeforeAll;
    private _fireBeforeEach;
    private _fireAfterEach;
    private _fireAfterAll;
    private _fireSuccess;
    private _fireFailure;
    private _fireError;
    private _fireFinally;
    private _onBeforeScenarioExecutes;
    private _onAfterScenarioExecutes;
    private _onAfterScenarioFinished;
    protected _beforeAllResolved(): Promise<any>;
    protected _publish(statusEvent: SuiteStatusEvent): void;
}
