import { QualityIntelligence } from "@oscharko-dev/keiko-contracts";
import type { PolicyProfile } from "../domain/policyProfile.js";
type Candidate = QualityIntelligence.QualityIntelligenceTestCaseCandidate;
type RunId = QualityIntelligence.QualityIntelligenceRunId;
type AtomId = QualityIntelligence.QualityIntelligenceEvidenceAtomId;
export interface ParseGeneratedCandidatesInput {
    readonly runId: RunId;
    /** Atom IDs in the SAME order they were numbered (1-based) in the prompt evidence block. */
    readonly atomIds: readonly AtomId[];
    readonly profile?: PolicyProfile;
    readonly maxCandidates: number;
}
export interface ParseGeneratedCandidatesResult {
    readonly candidates: readonly Candidate[];
    /** True when no JSON object/array could be recovered from the model text at all. */
    readonly recovered: boolean;
    /** Count of raw items skipped because they lacked a usable title or steps. */
    readonly skipped: number;
}
/**
 * Parse raw model output into validated candidates. Returns `recovered: false` when no JSON value
 * could be located, so the orchestrator can fail the run with a clear, non-secret reason instead
 * of silently emitting zero candidates.
 */
export declare const parseGeneratedCandidates: (rawText: string, input: ParseGeneratedCandidatesInput) => ParseGeneratedCandidatesResult;
export {};
//# sourceMappingURL=parseGeneratedCandidates.d.ts.map