import type { HookRule } from './schema.js';
/**
 * Rule classification per ADR-104 § Convergence + § Target-aware dispatch
 * (strategy-Gemini Q1 binding synthesis, T1930Z 2026-05-11).
 *
 * Two classes:
 * - `spine`: has Rego-shadow representation; formally verified by SMT;
 *   eligible for the top ~30 invariant set. Ships in ADR-103's lint-rule
 *   pipeline. Not produced by this V1 hook engine.
 * - `interpretive`: ast-grep / regex only; no formal verification obligation;
 *   ships outside the core invariant set. All bot-pack hooks in V1 fall here.
 *
 * The hook runtime treats every rule as `interpretive`. The class is named
 * explicitly so the loader's warn-and-ignore signal on a future Spine-Rule
 * promotion attempt (`verification_shadow:` on a hook rule) carries the
 * dispatch contract in its error message rather than relying on prose docs.
 *
 * V2 may promote bot-pack hooks to `spine` via a follow-on ADR; this seam
 * is where that promotion lands.
 */
export type RuleClassification = 'spine' | 'interpretive';
export interface ClassificationResult {
    classification: RuleClassification;
    /**
     * When set, the loader SHOULD emit this string to stderr but continue
     * loading the rule. Empty when no warn-and-ignore signal applies.
     */
    warning?: string;
}
/**
 * Classify a hook rule for V1 dispatch.
 *
 * Always returns `interpretive` per ADR-104 § Target-aware dispatch (hooks
 * are Interpretive Rule class — no formal-verification obligation; PreToolUse
 * payloads are not source code, so the Rego/OPA value proposition is weaker
 * than for lint rules).
 *
 * If the rule carries a `verification_shadow:` block (forward-compat schema
 * permits this for future Spine promotion), the returned result includes a
 * structured warning. Per ADR-104 § Convergence: "the engine MUST
 * warn-and-ignore the block (the rule itself still executes as
 * Interpretive)."
 */
export declare function classifyHookRule(rule: HookRule): ClassificationResult;
//# sourceMappingURL=classification.d.ts.map