/**
 * Analyse-verify feedback runner — the analyse-side analog of realize's
 * `feedback-runner.ts`. Runs the verifiers, groups findings by action stub,
 * surgically re-fires each offending body ONCE with a targeted correction, and
 * recomputes the residual. Mirrors realize's default single-pass policy.
 *
 * Decoupled from the orchestrator: the caller supplies a `refire` callback that
 * wraps `runSurgicalRetry` (with the new `correctionByYamlPath`) and the
 * skeleton / model / source context. This module owns only the rule loop, the
 * correction assembly, and the residual recompute. It NEVER drops a body — a
 * residual finding is surfaced in the sidecar, not deleted.
 */
import type { ActionBody } from '../microcall-orchestrator.js';
import type { AnalyseVerifyContext, VerifyFinding } from './types.js';
/** Re-fire callback. Given the affected stub paths + per-stub correction text,
 *  re-fire those action bodies and return the MERGED full body map (prior
 *  bodies with the re-fired ones replaced). The caller wraps `runSurgicalRetry`. */
export type AnalyseRefire = (req: {
    affectedStubPaths: string[];
    correctionByYamlPath: Map<string, string>;
}) => Promise<Map<string, ActionBody>>;
export interface AnalyseVerifyResult {
    /** Findings detected on the initial bodies, in stub order. */
    initialFindings: VerifyFinding[];
    /** Findings still present after the re-fire pass. */
    residualFindings: VerifyFinding[];
    /** Action bodies after the re-fire pass (initial bodies if no re-fire ran). */
    finalBodies: Map<string, ActionBody>;
    /** Number of action stubs re-fired. */
    refiredStubs: number;
    /** Verifier-level notes (e.g. a rule that threw). */
    notes: string[];
}
/** Run the verify + single surgical re-fire pass. */
export declare function runAnalyseVerifyFeedback(ctx: AnalyseVerifyContext, refire: AnalyseRefire, enabledOverrides?: Set<string>): Promise<AnalyseVerifyResult>;
//# sourceMappingURL=feedback-runner.d.ts.map