import { SpruceSchemas } from '@sprucelabs/mercury-types';
import { SchemaValues } from '@sprucelabs/schema';
import AbstractAction from '../../AbstractAction';
import { FeatureActionResponse, ActionOptions } from '../../features.types';
import { WatchMode } from '../TestReporter';
export declare const optionsSchema: SpruceSchemas.SpruceCli.v2020_07_22.TestOptionsSchema;
export type OptionsSchema = typeof optionsSchema;
export default class TestAction extends AbstractAction<OptionsSchema> {
    optionsSchema: SpruceSchemas.SpruceCli.v2020_07_22.TestOptionsSchema;
    invocationMessage: string;
    private testReporter?;
    private testRunner?;
    private runnerStatus;
    private pattern;
    private inspect?;
    private holdPromiseResolve?;
    private lastTestResults;
    private originalInspect;
    private watcher?;
    private watchMode;
    private isRpTraining;
    private fileChangeTimeout?;
    private hasWatchEverBeenEnabled;
    private readonly watchDelaySec;
    constructor(options: ActionOptions);
    execute(options: SchemaValues<OptionsSchema>): Promise<FeatureActionResponse>;
    private handleFileChange;
    private generateFilterFromChangedFiles;
    private doWeCareAboutThisFileChanging;
    private handleToggleDebug;
    private handletoggleStandardWatch;
    private handleToggleSmartWatch;
    private handleToggleRpTraining;
    setWatchMode(mode: WatchMode): void;
    private restart;
    private handleQuit;
    private handleRerunTestFile;
    private fileToFilterPattern;
    private handleFilterPatternChange;
    private handleStartStop;
    private handleRestart;
    kill(): void;
    private handleOpenTestFile;
    private startTestRunner;
    waitForStart(): Promise<void>;
    private openTestFile;
    private generateErrorsFromTestResults;
    private mapErrorResultToSpruceError;
    getWatchMode(): WatchMode;
}
