/**
 * ADR-PIPELINE-067: Financial Consistency Rules (FCR-001..009)
 *
 * Pure functions over the output of financial-claim-extractor + an optional
 * unit-economics manifest. Each rule returns zero or more Violation objects.
 *
 * Rule IDs:
 *   FCR-001  Same scope + same kind across documents ⇒ numeric ranges must overlap
 *   FCR-002  Pilot investment MUST be ≤ full-program investment
 *   FCR-003  Phase-1 range MUST be a subset of full-program range
 *   FCR-004  Every currency claim MUST have a non-unscoped scope
 *   FCR-005  Timeline claims for the same scope MUST match within ±1 week
 *   FCR-006  Savings + investment for the same scope MUST yield the ROI stated
 *   FCR-007  When unit-economics manifest exists, top-line figures match ±1%
 *   FCR-008  Pilot savings × (enterprise/pilot units) MUST equal enterprise savings ±5%
 *   FCR-009  At most one "headline" figure per document
 */
import type { FinancialClaim, FinancialClaimDocument, FinancialClaimKind, FinancialClaimScope } from './financial-claim-extractor.js';
import type { UnitEconomics } from '../pipeline/types.js';
import type { ConsensusSnapshot } from './consensus-tiers.js';
export type Severity = 'error' | 'warn';
export interface Violation {
    readonly ruleId: string;
    readonly severity: Severity;
    readonly message: string;
    readonly claims: readonly FinancialClaim[];
    readonly suggestedFix?: string;
}
declare function ruleFcr001(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr002and003(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr004(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr005(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr006(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr007(claims: readonly FinancialClaim[], manifest: UnitEconomics | null): Violation[];
declare function ruleFcr008(claims: readonly FinancialClaim[], manifest: UnitEconomics | null): Violation[];
declare function ruleFcr009(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr011(claims: readonly FinancialClaim[]): Violation[];
declare function ruleFcr012(claims: readonly FinancialClaim[]): Violation[];
export interface DocumentBody {
    readonly document: FinancialClaimDocument;
    readonly content: string;
}
declare function ruleFcr010(documents: readonly DocumentBody[], consensus: ConsensusSnapshot | null): Violation[];
export interface RunRulesInput {
    readonly claims: readonly FinancialClaim[];
    readonly manifest?: UnitEconomics | null;
    readonly documents?: readonly DocumentBody[];
    readonly consensus?: ConsensusSnapshot | null;
}
export declare function runConsistencyRules(input: RunRulesInput): Violation[];
export declare const __internal: {
    ruleFcr001: typeof ruleFcr001;
    ruleFcr002and003: typeof ruleFcr002and003;
    ruleFcr004: typeof ruleFcr004;
    ruleFcr005: typeof ruleFcr005;
    ruleFcr006: typeof ruleFcr006;
    ruleFcr007: typeof ruleFcr007;
    ruleFcr008: typeof ruleFcr008;
    ruleFcr009: typeof ruleFcr009;
    ruleFcr010: typeof ruleFcr010;
    ruleFcr011: typeof ruleFcr011;
    ruleFcr012: typeof ruleFcr012;
};
export declare function countViolations(vs: readonly Violation[]): {
    errors: number;
    warnings: number;
};
export declare function violationsByDocument(vs: readonly Violation[]): Map<FinancialClaimDocument, Violation[]>;
export type { FinancialClaim, FinancialClaimDocument, FinancialClaimKind, FinancialClaimScope };
//# sourceMappingURL=financial-consistency-rules.d.ts.map