/**
 * Skill-signals reader — loads `.specweave/state/skill-signals.json` and
 * lazy-migrates v1 → v2 on first read.
 *
 * Contract: never throws on missing/empty/corrupted files. Caller receives
 * a well-formed v2 `SignalFile`.
 *
 * @module core/skill-signals/reader
 */
import { type RefinementSignal, type SignalFile } from '../../types/skill-signals.js';
/**
 * Read + normalize the signal file at `filePath`. Missing files return an
 * empty v2 file. v1 files are migrated in memory; the file on disk is NOT
 * touched — the next writer call will persist the v2 shape.
 */
export declare function readSignals(filePath: string): Promise<SignalFile>;
/**
 * List refinement signals targeting a given skill, ranked by severity ×
 * recency. The `lastNIncrements` option limits results to signals whose
 * `incrementId` is among the N highest-sorted increment IDs present in the
 * file (lexicographic sort is sufficient — increment IDs are 4-digit
 * zero-padded strings, optionally suffixed with an uppercase letter).
 *
 * Ranking (descending): severity rank first (high=3, medium=2, low=1),
 * then `detectedAt` ISO timestamp descending.
 */
export declare function listRefinementsForSkill(filePath: string, skillSlug: string, opts?: {
    lastNIncrements?: number;
}): Promise<RefinementSignal[]>;
//# sourceMappingURL=reader.d.ts.map