/** * Git Integration Interfaces * SOLID Principles: Interface Segregation */ export interface GitCommitInfo { hash: string; shortHash: string; message: string; author: string; date: Date; changedFiles: string[]; additions: number; deletions: number; } export interface GitDiffResult { file: string; status: 'added' | 'modified' | 'deleted' | 'renamed'; linesAdded?: number; linesDeleted?: number; patch?: string; changes?: GitFileChange[]; } export interface GitFileChange { type: 'added' | 'removed' | 'modified'; lineNumber: number; content: string; context?: string; } export interface ChangeSignificance { score: number; factors: SignificanceFactor[]; shouldAutoCommit: boolean; commitMessage?: string; } export interface SignificanceFactor { type: 'file_count' | 'line_changes' | 'new_features' | 'tests' | 'config' | 'dependencies'; impact: number; description: string; } export interface AutoCommitRules { enabled: boolean; minSignificanceScore?: number; requiresCompilation?: boolean; watchPatterns?: string[]; maxCommitFrequency?: number; } export interface CommitAnalysis { commit: GitCommitInfo; significance: ChangeSignificance; codeAnalysis?: { duplicationsChanged: number; dependenciesChanged: number; complexityDelta: number; newPatterns: string[]; }; } export interface IGitOperationsService { getCurrentCommit(): Promise; getCommitsSince(since: string): Promise; getDiffBetweenCommits(from: string, to: string): Promise; getWorkingDirectoryDiff(projectPath: string): Promise; getStagedFiles(projectPath: string): Promise; isGitRepository(): Promise; } export interface IGitAnalysisService { analyzeChangeSignificance(diff: GitDiffResult[]): Promise; analyzeCommitRange(projectPath: string, from: string, to: string): Promise; compilesSuccessfully(): Promise; } export interface IGitDatabaseService { recordCommit(commit: GitCommitInfo, significance: ChangeSignificance, autoCommitted: boolean): Promise; updateDatabaseFromGitHistory(): Promise; getCommitHistory(limit: number): Promise; getIntegrationStatus(projectPath: string): Promise; } export interface IGitAutoCommitService { performAutoCommit(significance: ChangeSignificance): Promise; configureAutoCommit(projectPath: string, rules: Partial): Promise; startAutoCommitWatcher(): Promise; stopAutoCommitWatcher(): Promise; } //# sourceMappingURL=interfaces.d.ts.map