import type { Suggestion } from '../../shared/types/suggestion.types.js'; import type { Patch, PatchFailure, ApplyOptions, ApplyResult, DryRunResult, BenchmarkMetrics } from '../../shared/types/patch.types.js'; export interface IGitService { isGitRepo(): Promise; createBranch(name: string): Promise; createBackupCommit(message: string): Promise; getCurrentBranch(): Promise; hasUncommittedChanges(): Promise; stageFiles(files: string[]): Promise; commit(message: string): Promise; checkoutBranch(name: string): Promise; } export interface IPatchGenerator { generatePatches(suggestions: Suggestion[]): Promise; generatePatch(suggestion: Suggestion): Promise; } export interface IDryRunService { preview(patches: Patch[]): Promise; writePatchFiles(patches: Patch[]): Promise; } export interface IAutoApplyService { apply(patches: Patch[], options: ApplyOptions): Promise; runValidation(): Promise; collectBenchmarks(): Promise; } export interface IPatcherService { generatePatches(suggestions: Suggestion[]): Promise; applyPatches(patches: Patch[], options: ApplyOptions): Promise; dryRun(patches: Patch[]): Promise; } export interface ValidationResult { success: boolean; lintPassed: boolean; formatPassed: boolean; testsPassed: boolean; errors: string[]; } export interface PatchGenerationOptions { maxPatches?: number; highConfidenceOnly?: boolean; } export interface FixCommandOptions { dryRun?: boolean; autoApply?: boolean; backup?: boolean; gitBranch?: string; maxPatches?: number; runLint?: boolean; runTests?: boolean; lintCommand?: string; testCommand?: string; } export { Patch, PatchFailure, ApplyOptions, ApplyResult, DryRunResult, BenchmarkMetrics, };