import { RunnerEvents, RunnerSummary } from './types';
/**
 * Tracks the tests events to generate a summary report. Failing tests are further tracked
 * for complete hierarchy
 */
export declare class Tracker {
    /**
     * Time tracker to find runner duration
     */
    private timeTracker;
    /**
     * Currently active suite
     */
    private currentSuite?;
    /**
     * Currently active group
     */
    private currentGroup?;
    /**
     * If the entire run cycle has one or more errors
     */
    private hasError;
    /**
     * Storing state if current suite and group has errors. These
     * errors are not directly from the suite and groups, but
     * instead from their children.
     *
     * For example: If a test fails, it marks both current group
     * and suite has errors.
     */
    private currentSuiteHasError;
    private currentGroupHasError;
    private aggregates;
    private duration;
    /**
     * A tree of suites/groups and tests that have failed. They are always nested inside
     * other unless the test groups where used, then suites contains a list of tests
     * directly.
     */
    private failureTree;
    private failedTestsTitles;
    /**
     * Set reference for the current suite
     */
    private onSuiteStart;
    /**
     * Move suite to the failure tree when the suite
     * has errors
     */
    private onSuiteEnd;
    /**
     * Set reference for the current group
     */
    private onGroupStart;
    /**
     * Move suite to the failure tree when the suite
     * has errors
     */
    private onGroupEnd;
    /**
     * In case of failure, track the test inside the current group
     * or the current suite.
     */
    private onTestEnd;
    /**
     * Mark test as failed
     */
    private markTestAsFailed;
    /**
     * Increment the count of uncaught exceptions
     */
    private onUncaughtException;
    /**
     * Process the tests events
     */
    processEvent<Event extends keyof RunnerEvents>(event: keyof RunnerEvents, payload: RunnerEvents[Event]): void;
    /**
     * Returns the tests runner summary
     */
    getSummary(): RunnerSummary;
}
