import type { EntityDiagnostic, EntityDiagnosticCode } from './types.js';
export type EntityDiagnosticEvidenceClass = 'truncation' | 'evidence-gap' | 'informational';
/** Bound exhaustion and deliberately skipped bounded work. */
export declare const TRUNCATION_CODES: ReadonlySet<EntityDiagnosticCode>;
/** Every diagnostic that prevents OCC from claiming complete semantic evidence. */
export declare const ENTITY_EVIDENCE_GAP_CODES: ReadonlySet<EntityDiagnosticCode>;
export interface EntityEvidenceGapSummary {
    /** Total matching diagnostics before the bounded reasons projection. */
    count: number;
    /** First diagnostics in their deterministic producer order. */
    reasons: EntityDiagnostic[];
}
export declare const ENTITY_EVIDENCE_GAP_REASON_LIMIT = 5;
/** Project the wide evidence-gap set into a bounded, renderable honesty block. */
export declare function summarizeEntityEvidenceGaps(diagnostics: readonly EntityDiagnostic[], limit?: number): EntityEvidenceGapSummary;
/**
 * Ambiguity has two observations: declined match pairs and emitted refusal
 * diagnostics. They are intentionally additive because neither subsumes the
 * other (one refusal can orphan records on both sides of a transition).
 */
export declare function countEntityAmbiguityEvidence(ambiguitiesRefused: number, diagnostics: readonly EntityDiagnostic[]): number;
export declare function isEntityEvidenceGapDiagnostic(diagnostic: EntityDiagnostic | EntityDiagnosticCode): boolean;
