import type { AnalysisResult } from '../agent/core/orchestratorTypes';
import type { ConclusionContract, ConclusionOutputMode } from '../agent/core/conclusionContract';
import type { DataEnvelope } from '../types/dataContract';
interface ConclusionContractDeriveOptions {
    mode?: ConclusionOutputMode;
    singleFrameDrillDown?: boolean;
    sceneId?: string;
}
interface EvidenceBackedConclusionContractDeriveOptions extends ConclusionContractDeriveOptions {
    existingContract?: ConclusionContract | null;
    dataEnvelopes?: DataEnvelope[];
}
/**
 * Normalize a conclusion string for contract parsing without user-facing
 * sanitization. This keeps evidence/source ids available for
 * `deriveConclusionContract`; display sanitization may intentionally remove
 * those ids later.
 */
export declare function normalizeNarrativeForContract(narrative: string): string;
/**
 * Derive a conclusion contract before display sanitization can remove internal
 * evidence ids from machine-readable references.
 */
export declare function deriveConclusionContractForNarrative(narrative: string, options?: ConclusionContractDeriveOptions): ConclusionContract | undefined;
/**
 * Derive a conclusion contract and guarantee row-level claim refs when the
 * provider returned a rich human report instead of the requested JSON contract.
 * The fallback uses captured DataEnvelope cells as the expected verifier values,
 * so `claimVerifierStatus=not_checked` does not masquerade as a valid result.
 */
export declare function deriveEvidenceBackedConclusionContractForNarrative(narrative: string, dataEnvelopes: DataEnvelope[] | undefined, options?: EvidenceBackedConclusionContractDeriveOptions): ConclusionContract | undefined;
/**
 * Normalize a conclusion string for end-user display. Safe to call on any
 * input; falls back to the original text when normalization would empty it.
 */
export declare function normalizeNarrativeForClient(narrative: string): string;
/**
 * Normalize an AnalysisResult's conclusion + re-derive its conclusionContract
 * (if missing) using the same rounds-based mode heuristic the HTTP path uses.
 * Returns the input unchanged when no fields would actually change, so the
 * identity check in callers (`result === normalized`) stays cheap.
 */
export declare function normalizeResultForReport(result: AnalysisResult, options?: EvidenceBackedConclusionContractDeriveOptions): AnalysisResult;
export {};
//# sourceMappingURL=agentResultNormalizer.d.ts.map