/**
 * src/verify/formal/index.ts
 *
 * Sprint-587 — Formal verification entry point.
 *
 * Orchestrates : AxiomSpec → SMT-LIB → Z3 subprocess → 4-state result →
 * (optionally) per-axiom policy decision.
 *
 * When `z3` is not in PATH, every spec resolves to UNKNOWN with a uniform
 * rationale. Callers can then apply their policies — typically resulting in
 * escalation or log (depending on the axiom and consumer mode).
 *
 * @module verify/formal
 */
import type { FormalVerifyResult } from "./result.js";
import { type AxiomPolicy, type ConsumerMode, type PolicyDecision, type VerifyContext } from "./policy.js";
import { type AxiomSpec } from "./spec-language.js";
export { type FormalVerifyResult, type FormalVerifyState, type FormalSolver, } from "./result.js";
export { type AxiomPolicy, type ConsumerMode, type VerifyContext, type PolicyAction, type PolicyDecision, type OnUnknown, type OnUnsafe, DEFAULT_POLICIES, applyPolicy, } from "./policy.js";
export { type AxiomSpec, type Condition, AXIOM_SPECS, compileToSmt, } from "./spec-language.js";
export { type SmtCheckResult, type SolverOptions, checkSmt, isZ3Available, } from "./solver.js";
/**
 * Bundle returned by {@link formalVerify} : the raw verification result plus
 * the policy-resolved decision.
 */
export interface FormalVerifyDecision {
    result: FormalVerifyResult;
    decision: PolicyDecision;
}
/**
 * Verify every supplied AxiomSpec, apply the per-axiom policy, and return
 * one {@link FormalVerifyDecision} per spec.
 *
 * If `z3` is not available on PATH, every result is UNKNOWN with
 * `solver: "none"`, and the policy layer handles routing.
 *
 * @param axiomSpecs       List of specs to verify (typically derived from
 *                         {@link AXIOM_SPECS}, possibly customised).
 * @param mode             Consumer mode (strict / permissive / audit_only).
 * @param context          Calling context (runtime / skill_ingestion).
 * @param customPolicies   Optional override map keyed by axiom label.
 */
export declare function formalVerify(axiomSpecs: AxiomSpec[], mode: ConsumerMode, context: VerifyContext, customPolicies?: Partial<Record<string, AxiomPolicy>>): Promise<FormalVerifyDecision[]>;
//# sourceMappingURL=index.d.ts.map