import { Command } from "@gemini-testing/commander";
import { BaseTestplane } from "./base-testplane";
import type { MainRunner } from "./runner";
import { TestCollection } from "./test-collection";
import { ConfigInput } from "./config/types";
import { MasterEventHandler, Test, TestResult } from "./types";
import { TagFilter } from "./utils/cli";
import { ViteServer } from "./runner/browser-env/vite/server";
import { TestsTracker } from "./runner/tests-tracker";
interface RunOpts {
    browsers: string[];
    sets: string[];
    grep: RegExp;
    tag: TagFilter;
    updateRefs: boolean;
    requireModules: string[];
    inspectMode: {
        inspect: boolean;
        inspectBrk: boolean;
    };
    reporters: string[];
    replMode: {
        enabled: boolean;
        beforeTest: boolean;
        onFail: boolean;
        port?: number;
    };
    local: boolean;
    keepBrowserMode: {
        enabled: boolean;
        onFail: boolean;
    };
}
export type FailedListItem = {
    browserVersion?: string;
    browserId?: string;
    fullTitle: string;
};
interface RunnableOpts {
    saveLocations?: boolean;
}
export interface ReadTestsOpts extends Pick<RunOpts, "tag" | "browsers" | "sets" | "grep" | "replMode" | "keepBrowserMode"> {
    silent: boolean;
    ignore: string | string[];
    failed: FailedListItem[];
    runnableOpts?: RunnableOpts;
}
export interface Testplane {
    on: MasterEventHandler<this>;
    once: MasterEventHandler<this>;
    prependListener: MasterEventHandler<this>;
}
export declare class Testplane extends BaseTestplane {
    protected failed: boolean;
    protected failedList: FailedListItem[];
    protected runner: MainRunner | null;
    protected viteServer: ViteServer | null;
    private _filesToRemove;
    protected testsTracker: TestsTracker | null;
    constructor(config?: string | ConfigInput);
    extendCli(parser: Command): Promise<void>;
    addFileToRemove(path: string): void;
    protected _startServersIfNeeded(): Promise<void>;
    run(testPaths: TestCollection | string[], { browsers, sets, grep, tag, updateRefs, requireModules, inspectMode, replMode, local, keepBrowserMode, reporters, }?: Partial<RunOpts>): Promise<boolean>;
    protected _saveFailed(): Promise<void>;
    protected _readTests(testPaths: string[] | TestCollection, opts: Partial<ReadTestsOpts>): Promise<TestCollection>;
    addTestToRun(test: Test, browserId: string): boolean;
    readTests(testPaths: string[], { browsers, sets, grep, tag, silent, ignore, replMode, keepBrowserMode, runnableOpts, }?: Partial<ReadTestsOpts>): Promise<TestCollection>;
    isFailed(): boolean;
    protected _fail(): void;
    protected _addFailedTest(result: TestResult): void;
    isWorker(): boolean;
    private _handleError;
    halt(err: Error, timeout?: number, logError?: boolean): void;
}
export {};
