/**
 * Load project-level normalise overrides from a `.normalise.json` file.
 *
 * Phase 5 of `2026-05-13-NORMALISE-PHASE.md`. Allows users to disable
 * default-on rules or enable opt-in-only rules without editing engine
 * code. The override file lives at the project root (the directory
 * passed to `spv ai analyse <source>`).
 *
 * File shape:
 *
 *   {
 *     "$schema": "https://specverse.dev/normalise.schema.json",
 *     "disabled": ["cluster-module-functions", "drop-trivial-passthrough"],
 *     "enabled":  ["some-opt-in-rule"]
 *   }
 *
 * `disabled` lists rule IDs to skip even though they're enabled by
 * default. `enabled` lists rule IDs to run even though they're opt-in.
 * Both arrays are optional and default to empty.
 *
 * Unknown rule IDs produce a warning (returned via `warnings`) but
 * don't fail the load — engine versions evolve and the user may have
 * a config from a newer version. The runner skips unknown IDs silently.
 */
export interface NormaliseOverrides {
    disabledRules: Set<string>;
    enabledRules: Set<string>;
    /** Path that was loaded (absolute), or null if no file existed. */
    source: string | null;
    /** Non-fatal issues — unknown rule IDs, malformed entries. Caller
     *  surfaces these to the audit log so the user sees them. */
    warnings: string[];
}
/**
 * Load `.normalise.json` from `projectDir`. Returns empty sets when:
 *   - the file doesn't exist (no overrides configured)
 *   - the file is unreadable / not valid JSON / not the expected shape
 *
 * The function NEVER throws — analyse should proceed even when the
 * config is broken. Errors land in `warnings`.
 */
export declare function loadNormaliseOverrides(projectDir: string): NormaliseOverrides;
//# sourceMappingURL=load-overrides.d.ts.map