/**
 * L3 Verification Runner
 *
 * Runs the Quint-transpiled guards against a spec snapshot and reports
 * pass / fail / skipped. A guard is skipped when any of its state-var
 * dependencies is missing from the snapshot — a raw (pre-inference)
 * spec, for example, won't have `inferredControllers`, so guards that
 * need it are skipped rather than failed.
 *
 * Usage:
 *   const result = await verifySpec(parsedSpec, { entitiesDir });
 *   if (result.failed.length > 0) process.exit(1);
 *
 * The caller is responsible for deciding what "the spec" is — raw,
 * inferred, or something else. `verifySpec` runs whichever guards are
 * applicable.
 */
export interface VerificationFailure {
    name: string;
    entity: string;
    module: string;
    quint: string;
}
export interface VerificationSkip {
    name: string;
    entity: string;
    missingDeps: string[];
}
export interface VerificationError {
    name: string;
    entity: string;
    message: string;
}
export interface VerificationResult {
    total: number;
    passed: number;
    failed: VerificationFailure[];
    skipped: VerificationSkip[];
    errors: VerificationError[];
}
export interface VerifyOptions {
    /** Path to @specverse/entities source. Auto-resolved if omitted. */
    entitiesDir?: string;
    /**
     * Which Quint state variables the snapshot populates. If a guard
     * depends on a var not in this set, it's skipped. If omitted, derived
     * from the keys of `snapshot`.
     */
    availableVars?: string[];
}
/**
 * Build a Quint-shaped snapshot from a SpecVerse AST.
 *
 * The AST nests collections under `components` and uses shorthand
 * strings for relationships and convention-format attributes. The
 * guards were written against a flatter, more structured shape — each
 * top-level state var (`models`, `controllers`, etc.) is an array of
 * entities, and each entity's nested collections (`attributes`,
 * `relationships`, …) are keyed maps.
 *
 * This function performs the normalization. The caller passes any spec
 * (raw or inferred); only keys actually present in the spec are
 * populated in the returned snapshot.
 */
export declare function buildSnapshot(spec: any, stateVars: string[]): Record<string, any[]>;
/**
 * Run the L3 verification gate against the provided spec.
 *
 * `spec` can be any SpecVerse AST — raw, inferred, or anywhere in
 * between. Only guards whose dependencies are present in the
 * resulting snapshot run; the rest are reported as skipped.
 */
export declare function verifySpec(spec: any, opts?: VerifyOptions): Promise<VerificationResult>;
/**
 * Format a verification result for CLI output.
 */
export declare function formatVerificationResult(result: VerificationResult, verbose?: boolean): string;
//# sourceMappingURL=verification.d.ts.map