import type { MutantResult } from '@stryker-mutator/api/core'; import type { CostSnapshot } from '../llm/index'; /** The `llm/` mutator-name prefix (mirrors propose.ts PROPOSE_MUTATOR_PREFIX). */ export declare const LLM_PREFIX = "llm"; /** Per-mutant enrichment the driver supplies from the pre-pass side-table. */ export interface MutantEnrichment { /** The original source text the mutant replaced (LLM mutants only). */ original?: string; /** The precise per-candidate `llm/` (overrides Stryker's coarse `llm`). */ tag?: string; /** The LLM rationale for why this is an interesting mutant. */ rationale?: string; } /** Options for {@link formatReport}. */ export interface FormatReportOptions { /** id → enrichment side-map from the pre-pass (original/tag/rationale). */ enrichment?: Map; } /** One survivor row in the filtered artifact (JSON-serializable). */ export interface FilteredMutant { /** Stryker mutant id. */ id: string; /** The source file. */ fileName: string; /** 1-based line (Stryker schema location). */ line: number; /** 1-based column (Stryker schema location). */ column: number; /** The effective mutator name (enriched `llm/` when available). */ mutatorName: string; /** Stryker's mutant status. */ status: string; /** The replacement text (when Stryker carried it). */ replacement?: string; /** The original span text (LLM enrichment only). */ original?: string; /** The LLM rationale (enrichment only). */ rationale?: string; } /** The filtered, OUR-mutants-only artifact the driver may persist. */ export interface FilteredReport { /** Only `heuristic/*` + `llm/*` mutants, across all statuses. */ mutants: FilteredMutant[]; } /** The full reporter output. */ export interface ReportOutput { /** The rendered SURVIVORS section (one line per our survived mutant). */ survivorsText: string; /** The summary (counts + not-comparable note + cost line). */ summaryText: string; /** The filtered, our-mutants-only artifact. */ filtered: FilteredReport; } /** True when a mutator name is one of OURS (a registered LLM name, llm/*, heuristic/* or a bare heuristic). */ export declare function isOurMutant(mutatorName: string): boolean; /** * Format the reporter output from Stryker's `MutantResult[]` + the LLM cost * snapshot + an optional enrichment side-map. * * @param results Stryker's full mutant results (built-ins + ours, all statuses). * @param cost The per-run LLM cost snapshot (zero on a heuristics-only run). * @param options Optional id→enrichment side-map. * @returns The survivors text, the summary text, and the filtered artifact. */ export declare function formatReport(results: readonly MutantResult[], cost: CostSnapshot, options?: FormatReportOptions): ReportOutput;