/**
 * Numeric Proof Proving - Narrowing proof construction
 *
 * This module handles proving that numeric narrowing expressions are sound:
 * - Literal value proofs (via proveLiteral from analysis)
 * - Identifier proofs (via proven variables/parameters)
 * - Binary/unary operation proofs (via C# promotion rules)
 * - Call/member access proofs (via CLR return types)
 * - Conditional and nullish coalescing proofs
 *
 * CRITICAL: If a narrowing cannot be proven, a diagnostic is emitted.
 * There is NO fallback to cast - unprovable narrowings are compilation errors.
 */
import { IrNumericNarrowingExpression, NumericProof } from "../types.js";
import { type ProofContext } from "./numeric-proof-analysis.js";
/**
 * Attempt to prove a numeric narrowing expression.
 * If proof fails, emits an error diagnostic - NO FALLBACK TO CAST.
 */
export declare const proveNarrowing: (expr: IrNumericNarrowingExpression, ctx: ProofContext) => NumericProof | undefined;
//# sourceMappingURL=numeric-proof-proving.d.ts.map