import type { CodebaseIndex } from './codebase-indexer.js'; import type { Claim, ClaimVerification, Verdict } from '../types.js'; /** How much of a file the verifier actually received, when it was not all of it. */ interface TruncationRecord { read: number; total: number; } /** True when a verdict's reasoning blames the file bundle rather than the application. */ export declare function reasoningIndicatesMissingCode(reasoning: string): boolean; /** * Last-resort net: any PARTIAL/FAIL that still blames the bundle after prompt * guidance and slice widening is demoted to UNVERIFIABLE so it cannot enter * the bug list. Mutates in place; returns the number demoted. */ export declare function demoteMissingEvidenceVerdicts(verifications: ClaimVerification[]): number; /** * A partial read can show that code EXISTS. It can never show that code is * absent, correct, or complete. So any PASS whose cited evidence comes from a * file the verifier only partly received is demoted to UNVERIFIABLE, naming the * file and the fraction read. * * This is the asymmetry the whole truncation path turns on: positive evidence * survives a partial read, negative evidence does not. Without this, a 1,200-line * engine read down to its first 10KB can return a green claim about logic that * lives in the part nobody looked at. * * Mutates in place; returns true when the verdict was demoted. */ export declare function demotePassOnTruncatedEvidence(v: ClaimVerification, truncated: Map): boolean; export declare function verifyClaims(claims: Claim[], index: CodebaseIndex, onProgress?: (msg: string) => void): Promise<{ verifications: ClaimVerification[]; inputTokens: number; outputTokens: number; cacheReadInputTokens: number; cacheCreationInputTokens: number; voteDetails?: { passes: number; minConfidence: number; votes: Array<{ claimId: string; finalVerdict: Verdict; confidence: number; votes: Verdict[]; unanimous: boolean; }>; }; }>; export {};