/**
 * Result of conflict check operation
 */
export interface ConflictCheckResult {
  hasConflicts: boolean;
  conflicts: ConflictInfo[];
  strategy: "merge" | "rebase";
  canRetry: boolean;
  remoteBranch: string;
  localBranch: string;
}

/**
 * Information about a single conflict
 */
export interface ConflictInfo {
  file: string;
  type: "content" | "delete" | "add" | "rename";
  ours?: string;
  theirs?: string;
}

/**
 * Options for checking conflicts
 */
export interface ConflictCheckOptions {
  localPath: string;
  remote?: string;
  remoteBranch?: string;
  strategy?: "merge" | "rebase";
}

/**
 * Conflict detection error types
 */
export class ConflictDetectionError extends Error {
  constructor(
    message: string,
    public readonly operation: string,
    public readonly cause?: Error
  ) {
    super(message);
    this.name = "ConflictDetectionError";
  }
}
