import { Diff } from '../entities/Diff'; export interface DiffOptions { readonly baseRef?: string; readonly headRef?: string; readonly includeStaged?: boolean; readonly includeUnstaged?: boolean; readonly filePatterns?: string[]; readonly excludePatterns?: string[]; } export interface DiffProviderPort { /** * Get diffs for a specific commit or range */ getDiffs(options?: DiffOptions): Promise; /** * Get diff for a specific file */ getFileDiff(filePath: string, options?: DiffOptions): Promise; /** * Get diff between two specific commits */ getCommitDiff(baseCommit: string, headCommit: string, options?: DiffOptions): Promise; /** * Get staged changes diff */ getStagedDiff(options?: DiffOptions): Promise; /** * Get unstaged changes diff */ getUnstagedDiff(options?: DiffOptions): Promise; /** * Check if a file has changes */ hasChanges(filePath: string, options?: DiffOptions): Promise; /** * Get commit information for a specific hash */ getCommitInfo(commitHash: string): Promise<{ readonly hash: string; readonly message: string; readonly author: string; readonly date: Date; readonly files: string[]; } | null>; }