/**
 * This provides the functionality that is shared between `tap run`
 * and `tap replay`, to figure out what tests need to be run, create
 * the various subtests for each, and pipe the whole thing through an
 * appropriate reporter.
 *
 * When called by `run`, the execution method is `t.spawn`. When called
 * by `replay`, the file is mapped to its appropriate saved results file in
 * `.tap/test-results`, and `t.tapFile()` is called.
 *
 * @module
 */
import { plugin as AfterPlugin } from '@tapjs/after';
import { LoadedConfig } from '@tapjs/config';
import type { TAP } from '@tapjs/core';
export declare const executeTestSuite: <T extends TAP & ReturnType<typeof AfterPlugin>, S extends (t: TAP & ReturnType<typeof AfterPlugin>) => T>(args: string[], config: LoadedConfig, 
/**
 * called with the tap object, so any additional plugins can be applied or
 * other modifications if needed.
 */
applyPlugins: S, 
/**
 * called before running the test files, but only if we have files to run
 */
setup: (t: T) => void | Promise<void>, 
/**
 * called with the mutated tap, and each test file path, relative to
 * config.projectRoot
 */
execute: (t: T, testFile: string, files: string[], hasReporter: boolean) => Promise<any>) => Promise<void>;
//# sourceMappingURL=execute-test-suite.d.ts.map