/**
 * Diff Detection Utility
 * Compares current repository tree against previous scan data to detect changed files
 * Used for incremental scanning (Story D)
 */
export interface TreeFileInfo {
    path: string;
    sha: string;
}
export interface DiffResult {
    /** Files that are new (not in previous scan) */
    added: string[];
    /** Files whose SHA changed (content modified) */
    modified: string[];
    /** Files that were deleted (in previous scan but not in current) */
    deleted: string[];
    /** Files that haven't changed */
    unchanged: string[];
    /** Total count of changed files (added + modified) */
    changedCount: number;
    /** Whether this is a significant change warranting incremental scan */
    shouldUseIncremental: boolean;
}
/**
 * Detect which files have changed between the current tree and previous scan
 *
 * @param currentTree - Array of files from current GitHub tree (path + sha)
 * @param previousFileShas - Map of {file_path: sha} from previous scan
 * @returns DiffResult with categorized file changes
 */
export declare function detectChangedFiles(currentTree: TreeFileInfo[], previousFileShas: Record<string, string> | null | undefined): DiffResult;
/**
 * Build a file SHA map from a GitHub tree response
 * Filters to only include blob (file) entries
 *
 * @param tree - GitHub tree items with path and sha
 * @returns Map of {file_path: sha}
 */
export declare function buildFileShaMap(tree: Array<{
    path: string;
    sha: string;
    type: 'blob' | 'tree';
}>): Record<string, string>;
/**
 * Check if two tree SHAs are different
 * Quick check before doing detailed file comparison
 *
 * @param currentTreeSha - SHA of current tree
 * @param previousTreeSha - SHA from previous scan
 * @returns true if trees are different (need detailed comparison)
 */
export declare function hasTreeChanged(currentTreeSha: string, previousTreeSha: string | null | undefined): boolean;
//# sourceMappingURL=diff-detector.d.ts.map