import { type LlmMutatorMap } from '../pipeline/llm-map'; import type { NodeMutator } from './types'; /** * The legacy wildcard name. Still registered (as a no-op mutator) so a plain * `// Stryker disable next-line llm` or `excludedMutations: ['llm']` names a * known mutator; the directive alias expands it to every category. */ export declare const LLM_MUTATOR_NAME = "llm"; /** * Every name the dynamic-LLM path registers with Stryker, in registration * order: the legacy wildcard first, then the 16 categories. STATIC — pushed * before any instrumentation regardless of the map contents. */ export declare const LLM_MUTATOR_NAMES: readonly string[]; /** Whether `name` is one of {@link LLM_MUTATOR_NAMES} (exact, case-sensitive). */ export declare function isLlmMutatorName(name: string): boolean; /** * Build the injected LLM `NodeMutator`s over a precomputed {@link LlmMutatorMap}: * exactly {@link LLM_MUTATOR_NAMES} in order — the no-op `llm` wildcard, then * one mutator per category whose `mutate(path)` yields only the entries of that * category. Each is a valid Stryker `NodeMutator`: a `name` plus a synchronous * `*mutate(path)` generator. They mutate NOTHING and call no LLM — they only * read the live path and yield precomputed replacement nodes. * * The hot path bails early (yields nothing) for every node whose file/loc is not * targeted, which is the overwhelming majority across a whole-repo instrument: * • no `hub.file.opts.filename` → no-match (degrades cleanly if Stryker stops * wiring the babel `File`); * • file not in the map → no-match; * • `node.loc` absent → no-match; * • loc not in the file's inner map → no-match. * So the per-node cost of the 16 category mutators is one `hub` read + one * `Map.get` each. * * @param map The precomputed `(absFileName, locKey) → ParsedEntry[]` table. * @param log Optional sink for unplaceable-candidate drop notes. * @returns The 17 Stryker `NodeMutator`s named {@link LLM_MUTATOR_NAMES}. */ export declare function createLlmMutators(map: LlmMutatorMap, log?: (line: string) => void): readonly NodeMutator[];