import { FileQueueItem } from '../types/index.js';
export interface FileChange {
    path: string;
    relativePath: string;
    type: 'added' | 'modified' | 'deleted';
    oldHash?: string;
    newHash?: string;
    lastModified: Date;
    size: number;
}
export interface ChangeDetectionResult {
    changes: FileChange[];
    stats: {
        added: number;
        modified: number;
        deleted: number;
        totalChanges: number;
    };
    hashManifest: FileHashManifest;
}
export interface FileHashManifest {
    version: string;
    generatedAt: Date;
    files: Record<string, FileHashEntry>;
}
export interface FileHashEntry {
    hash: string;
    size: number;
    lastModified: string;
    hasContext: boolean;
}
export declare class ChangeDetector {
    private repoPath;
    private manifestPath;
    private contextBasePath;
    constructor(repoPath: string);
    detectChanges(currentFiles: FileQueueItem[]): Promise<ChangeDetectionResult>;
    getFilesNeedingContext(currentFiles: FileQueueItem[]): Promise<FileQueueItem[]>;
    getOutdatedContexts(changes: FileChange[]): Promise<string[]>;
    cleanupObsoleteContexts(deletedFiles: string[]): Promise<number>;
    getChangesSummary(): Promise<{
        lastScan: Date | null;
        totalTrackedFiles: number;
        filesWithContext: number;
        contextCoverage: number;
    }>;
    private calculateFileHash;
    private hasExistingContext;
    private loadManifest;
    private saveManifest;
    resetManifest(): Promise<void>;
}
//# sourceMappingURL=change-detector.d.ts.map