import { Observable } from 'rxjs';
import { AdminReview, AdminReviewListFilters, AdminReviewsListResult, AdminReviewStatus } from '../models/admin-review.model';
import { AdminReport, AdminReportStatus } from '../models/admin-report.model';

export interface AdminModerationGateway {
  loadReviews(filters: AdminReviewListFilters): Observable<AdminReviewsListResult>;
  loadReview(id: string): Observable<AdminReview | null>;
  setReviewStatus(id: string, status: AdminReviewStatus, note: string): Observable<AdminReview | null>;
  setReviewVisible(id: string, visible: boolean): Observable<AdminReview | null>;
  setReviewPinned(id: string, pinned: boolean): Observable<AdminReview | null>;
  setReviewFeatured(id: string, featured: boolean): Observable<AdminReview | null>;
  addModeratorNote(id: string, note: string): Observable<AdminReview | null>;
  deleteReview(id: string): Observable<void>;
  loadReports(): Observable<AdminReport[]>;
  setReportStatus(id: string, status: AdminReportStatus): Observable<AdminReport | null>;
}
