/**
 * Review Comment Repository Port Interface
 *
 * Port for persisting inline review comments on phase diffs.
 */

import type { ReviewComment } from '../schema.js';

export interface CreateReviewCommentData {
  phaseId: string;
  filePath: string;
  lineNumber: number;
  lineType: 'added' | 'removed' | 'context';
  body: string;
  author?: string;
  parentCommentId?: string;  // for replies
}

export interface ReviewCommentRepository {
  create(data: CreateReviewCommentData): Promise<ReviewComment>;
  createReply(parentCommentId: string, body: string, author?: string): Promise<ReviewComment>;
  findByPhaseId(phaseId: string): Promise<ReviewComment[]>;
  update(id: string, body: string): Promise<ReviewComment | null>;
  resolve(id: string): Promise<ReviewComment | null>;
  unresolve(id: string): Promise<ReviewComment | null>;
  delete(id: string): Promise<void>;
}
