import type { SourceFile } from './instrument'; import type { MutantRunResult, SeamMutant } from './types'; /** Options for {@link runMutants}. */ export interface RunMutantsOptions { /** * The instrumented source files (as emitted by `instrument()`), keyed by the * file name they should be written to inside the fixture. File names may be * absolute or project-relative; only the basename is used inside the fixture. */ files: readonly SourceFile[]; /** * Extra non-instrumented files (e.g. the test file pinning behaviour) to * write into the fixture alongside `files`. Same naming rule. */ extraFiles?: readonly SourceFile[]; /** Per-mutant timeout in milliseconds. Defaults to {@link DEFAULT_TIMEOUT_MS}. */ timeoutMs?: number; /** Path to the `bun` binary. Defaults to `'bun'` (resolved on PATH). */ bunPath?: string; } /** * Score every mutant in `mutants` against the instrumented fixture. * * The fixture is materialised once; the test suite is run once per mutant with * that mutant activated via `__STRYKER_ACTIVE_MUTANT__`. A mutant is `killed` * when the suite fails under it and `survived` when it passes, `timeout` when * the run is killed for exceeding the limit, and `error` when the run could not * be executed. Runs are sequential so each mutant is scored in isolation. * * @param mutants The mutant manifest from `instrument()`. * @param options The instrumented files, optional extra fixture files, timeout, * and bun path. * @returns One {@link MutantRunResult} per input mutant, in input order. */ export declare function runMutants(mutants: readonly SeamMutant[], options: RunMutantsOptions): Promise;