import { SpawnTestFileOptions } from "../spawnTestFile/spawnTestFile";
import { RunTestFileOptions, Summary, TestOptions } from "../testRunner/testRunner";
import { Formatter } from "../formatters";
import { ReadDirOptions } from "../readDir/readDir";
export type TestSuiteOptions = {
    parallel: number;
    folder: string;
    formatter: Formatter;
    summaryOnly: boolean;
} & ReadDirOptions & SpawnTestFileOptions & RunTestFileOptions & TestOptions;
export type TestResult = {
    files: string[];
    runErrors: unknown[];
    ok: boolean;
    summary: Summary;
};
export type TestSuiteContext = {
    getFiles(path: string, options: ReadDirOptions): Promise<string[]>;
};
export declare class TestSuite {
    readonly context: TestSuiteContext;
    options: {
        parallel: number;
        folder: string;
        formatter: Formatter;
        summaryOnly: boolean;
        include: RegExp[];
        exclude: RegExp[];
        prefix: string[];
        snapshotsFolder?: string;
        confirmSnapshots?: boolean;
        reviewSnapshots?: boolean;
        regenerateSnapshots?: boolean;
        coverage?: boolean;
        coverageExclude?: RegExp[];
        coverageNoBranches?: boolean;
        coverageNoSourceMaps?: boolean;
        coverageTarget?: number;
        timeout?: number;
        clearModuleCache: boolean;
    };
    private _root;
    constructor(options: Partial<TestSuiteOptions>, context?: TestSuiteContext);
    run(): Promise<TestResult>;
    _run(): Promise<{
        files: string[];
        errors: any[];
    }>;
    private _spawnTestFiles;
}
