import type { ReviewTask, ReviewPriority, ReviewTaskStatus, ReviewEntityType, ReviewNote } from '../domain/review'

export interface ReviewFilters {
  priority?: ReviewPriority
  status?: ReviewTaskStatus
  entityType?: ReviewEntityType
  assignedTo?: string
  organizationId?: string
}

export interface IReviewProvider {
  getQueue(filters?: ReviewFilters): Promise<ReviewTask[]>
  getById(id: string): Promise<ReviewTask | null>
  updateStatus(id: string, status: ReviewTaskStatus, userId: string, note?: string): Promise<ReviewTask>
  addNote(id: string, note: Omit<ReviewNote, 'id'>): Promise<ReviewTask>
  assign(id: string, assignTo: string): Promise<ReviewTask>
  // Legacy actions (delegate to updateStatus internally)
  approve(id: string, reviewedBy: string, notes?: string): Promise<ReviewTask>
  reject(id: string, reviewedBy: string, notes?: string): Promise<ReviewTask>
}
