/**
 * Drift detection logic.
 *
 * Pure functions — given a stored SemanticFields and a current artifact
 * snapshot, classify status and produce a DriftRow. The CLI layer
 * orchestrates filesystem I/O around these primitives.
 *
 * @implements #1208
 */
import type { SemanticFields } from '../enrichment/types.js';
import { type DriftRow, type DriftThresholds } from './types.js';
/** Tokenize and de-stop a string into a content keyword set. */
export declare function keywords(text: string): Set<string>;
/** Jaccard-like overlap ratio between two keyword sets. */
export declare function keywordOverlap(a: Set<string>, b: Set<string>): number;
/** Symmetric difference between two symbol arrays. */
export declare function symbolDelta(stored: string[], current: string[]): {
    added: string[];
    removed: string[];
};
export interface DriftInput {
    artifactId: string;
    stored: SemanticFields;
    currentHash: string;
    /** Recomputed semantic fields for the current artifact (or null if not recomputed). */
    recomputed: SemanticFields | null;
    thresholds?: Partial<DriftThresholds>;
    now?: Date;
}
/** Classify drift for a single entry. */
export declare function detectDrift(input: DriftInput): DriftRow;
//# sourceMappingURL=drift.d.ts.map