/**
 * Deterministic behavior ↔ method-facts cross-check (TODO #32 v2).
 *
 * Pure-function, no-LLM check that compares analysed `behaviors[].publishes`
 * (and `actions[].publishes`, `operations[].publishes`) against
 * `MethodFactSheet.emits` lists. If a spec behavior claims to publish event
 * X but no source method actually emits X, that's a hallucination — flag it
 * BEFORE the LLM verify call so retry feedback is grounded in source truth.
 *
 * Symmetric check for `dbWrites`: if the source mutates Order but no
 * `ensures:` clause references the mutation, flag it.
 *
 * v1 was LLM-judgment-only via verify-analyse check 8. v2 promotes the
 * objective parts (emit set membership, dbWrite presence) to deterministic
 * gate that runs alongside the LLM call.
 */
import type { MethodFactSheet } from '../../analyse-prepass/interface.js';
export interface BehaviorViolation {
    /** Where in the spec the violation lives. */
    modelOrService: string;
    behaviorOrOperation: string;
    /** Violation category. */
    kind: 'emit-not-in-source' | 'source-emit-missing-from-spec' | 'dbwrite-missing-ensures';
    /** Human-readable explanation suitable for retry-prompt feedback. */
    message: string;
}
/**
 * Run the cross-check. Walks every executable in every component (model
 * behaviors, controller actions, service operations) and compares against
 * the supplied method fact sheets indexed by qualifiedName.
 *
 * Symbol-matching heuristic:
 *   - Behavior `Model.foo` matches MethodFactSheet `ModelController.foo` OR
 *     `ModelService.foo` OR `Model.foo` (most specific wins).
 *   - Action `Controller.foo` matches MethodFactSheet `Controller.foo`.
 *   - Operation `Service.foo` matches MethodFactSheet `Service.foo`.
 *
 * When no matching fact sheet exists, the executable is skipped silently
 * (the source method might have a different name, OR backend didn't extract
 * its details).
 */
export declare function crossCheckBehaviors(spec: any, sheets: MethodFactSheet[]): BehaviorViolation[];
/**
 * Format violations as a markdown block for prompt injection. The
 * verify-behavior prompt receives this alongside the per-behavior
 * fact sheet so the LLM sees the deterministic signal up front.
 */
export declare function formatBehaviorViolationsAsMarkdown(violations: BehaviorViolation[]): string;
//# sourceMappingURL=index.d.ts.map