import * as Clock from "../../Clock";
import * as T from "../../Effect";
import type { Platform } from "../../Fiber";
import type { Has } from "../../Has";
import * as L from "../../Layer";
import * as Annotations from "../Annotations";
import type { ExecutedSpec } from "../ExecutedSpec";
import type { ZSpec } from "../Spec";
import type { TestExecutor } from "../TestExecutor";
import type { TestLogger } from "../TestLogger";
import type { TestReporter } from "../TestReporter";
declare type TestRunnerEnv = Has<TestLogger> & Has<Clock.Clock>;
export declare class TestRunner<R, E> {
    readonly executor: TestExecutor<R, E>;
    readonly platform: Platform<unknown>;
    readonly reporter: TestReporter<E>;
    readonly bootstrap: L.Layer<unknown, never, TestRunnerEnv>;
    readonly runtime: T.CustomRuntime<undefined, unknown>;
    constructor(executor: TestExecutor<R, E>, platform?: Platform<unknown>, reporter?: TestReporter<E>, bootstrap?: L.Layer<unknown, never, TestRunnerEnv>);
    readonly run: (spec: ZSpec<R, E>) => T.RIO<TestRunnerEnv, ExecutedSpec<E>>;
}
export declare const defaultTestRunner: TestRunner<Has<Annotations.Annotations> & Clock.HasClock & import("../../Random").HasRandom, unknown>;
export {};
//# sourceMappingURL=index.d.ts.map