import workerpool from '@akryum/workerpool';
import { ReactiveFileSystem } from '@peeky/reactive-fs';
import { Awaited } from '@peeky/utils';
import { PeekyConfig } from '@peeky/config';
export interface RunnerOptions {
    config: PeekyConfig;
    testFiles: ReactiveFileSystem;
}
declare type EventHandler = (eventType: string, payload: any) => unknown;
export declare function setupRunner(options: RunnerOptions): Promise<{
    testFiles: {
        state: {
            files: {
                [path: string]: import("@peeky/reactive-fs/dist/file").ReactiveFile;
            };
        };
        readonly files: {
            [path: string]: import("@peeky/reactive-fs/dist/file").ReactiveFile;
        };
        createFile: (relativePath: string, content?: string) => import("@peeky/reactive-fs/dist/file").ReactiveFile;
        effect: (callback: () => unknown) => import("@vue/reactivity").ReactiveEffectRunner<any>;
        watch: <T = unknown>(source: () => T, handler: (value: T, oldValue: T) => unknown) => () => void;
        watchFile: (relativePath: string, handler: (content: string, oldContent: string) => unknown) => () => void;
        list: (folderRelativePath?: string, options?: import("@peeky/reactive-fs").ListOptions) => string[];
        watchList: (folderRelativePath: string, handler: (list: string[], oldList: string[]) => unknown, options?: import("@peeky/reactive-fs").ListOptions) => () => void;
        destroy: () => Promise<void>;
        onFileAdd: (handler: (relativePath: string) => unknown) => void;
        onFileChange: (handler: (relativePath: string) => unknown) => void;
        onFileRemove: (handler: (relativePath: string) => unknown) => void;
    };
    runTestFile: (relativePath: string) => Promise<{
        filePath: string;
        suites: import("./types").TestSuiteResult[];
        duration: number;
        modules: string[];
        coverage: import("./coverage").FileCoverage[];
    }>;
    close: () => Promise<void>;
    onEvent: (handler: EventHandler) => void;
    pool: workerpool.WorkerPool;
}>;
export declare type RunTestFileResult = Awaited<ReturnType<Awaited<ReturnType<typeof setupRunner>>['runTestFile']>>;
export {};
