import type { AutoDriftCacheEntry, AutoDriftCacheData } from '../types/index.js';
/**
 * Persists auto-drift scan results to data/{projectId}/workers/drift-cache.json.
 *
 * Each entry tracks driftScore, driftedFiles, cachedAt, and a `shown` flag.
 * shown=false means the banner has not been presented to the user yet.
 */
export declare class DriftCacheStore {
    private readonly projectId;
    constructor(projectId: string);
    load(): Promise<AutoDriftCacheData>;
    save(data: AutoDriftCacheData): Promise<void>;
    /**
     * Upsert a drift cache entry for a spec.
     * Always sets shown=false so the banner will be displayed on the next tool call.
     */
    upsert(entry: Omit<AutoDriftCacheEntry, 'shown'>): Promise<void>;
    /**
     * Returns pending drift entries (shown=false) above the given score threshold.
     * Threshold is a value 0-1 (e.g. 0.3 = 30% drift).
     */
    getPendingBanners(threshold: number): Promise<AutoDriftCacheEntry[]>;
    /**
     * Mark all pending entries as shown so the banner is not repeated.
     */
    markAllShown(): Promise<void>;
    /**
     * Mark a single entry as shown.
     */
    markShown(specId: string): Promise<void>;
    /**
     * Returns the cached entry for a spec, or undefined if not present.
     */
    get(specId: string): Promise<AutoDriftCacheEntry | undefined>;
    /**
     * Removes stale entries older than maxAgeMs.
     */
    evictStale(maxAgeMs: number): Promise<void>;
}
//# sourceMappingURL=drift-cache-store.d.ts.map