/**
 * Quint generator — emits a per-spec `.qnt` file that asserts lifecycle
 * reachability and behavior precondition validity. v1 of TODO #31.
 *
 * v1 scope (deliberately narrow — see
 * `specverse-self/docs/plans/2026-04-30-DETERMINISTIC-VERIFICATION-GATES.md`):
 *   - For each model with a `lifecycles:` block, generate a Quint state
 *     machine asserting:
 *       1. States are unique within the lifecycle.
 *       2. Transitions reference declared states only.
 *       3. There is at least one initial state (no incoming transition,
 *          or explicitly named in the spec).
 *       4. Behaviors with `requires:` clauses naming a state reference
 *          a real state.
 *
 * Out of scope for v1:
 *   - Cross-model invariants (e.g. Order belongs to Customer).
 *   - Full behavior pre/post encoding as transition guards.
 *   - Quint-driven simulation (`run` actions with assertions).
 *
 * Output is a single Quint module per spec with one sub-module per model
 * that has a lifecycle. The runner subprocess (`./runner.ts`) executes
 * `quint typecheck` against the generated file; reachability/transition
 * errors come back as line-numbered Quint diagnostics.
 */
export interface QuintGenResult {
    /** Quint module text. Empty when `skipped: true`. */
    content: string;
    /** Number of models that contributed lifecycle invariants. */
    modelCount: number;
    /** Number of behaviors whose `requires:` clauses reference lifecycle states. */
    behaviorPreconditionCount: number;
    /** True when the spec has no lifecycle blocks at all (nothing to verify). */
    skipped: boolean;
    /** Reason for skipping (when skipped=true). */
    skipReason?: string;
    /**
     * Deterministic invariant check results. The Quint typecheck (runner.ts)
     * validates that the generated module is syntactically and type-correct;
     * THIS field carries the value-level checks (states unique, transitions
     * reference declared states, etc.) which Quint's typecheck cannot evaluate.
     */
    violations: QuintViolation[];
}
export interface QuintViolation {
    /** Which model + lifecycle the violation belongs to. (lifecycleName is "" for cross-model checks.) */
    modelName: string;
    lifecycleName: string;
    /**
     * Violation category. v1 covers lifecycle shape; v2 adds cross-model
     * relationship validity + behavior-ensures state references.
     */
    kind: 'states-not-unique' | 'transition-references-unknown-state' | 'behavior-requires-unknown-state' | 'behavior-ensures-unknown-state' | 'relationship-target-unknown' | 'no-states-declared';
    /** Human-readable explanation suitable for retry-prompt feedback. */
    message: string;
}
/**
 * Generate a Quint specification from a SpecVerse spec. Walks every
 * component's models, collects lifecycle declarations, and emits Quint
 * `module` text encoding the four v1 invariants.
 *
 * The spec parameter accepts either the parsed AST (with components: array)
 * or an inferred-spec object (flat models map). The function probes shape
 * and adapts.
 */
export declare function generateQuintFromSpec(spec: any): QuintGenResult;
//# sourceMappingURL=index.d.ts.map