export type AdminReviewStatus = 'pending' | 'approved' | 'rejected' | 'spam';
export type AdminReviewTimelineEventKey = 'submitted' | 'statusChanged' | 'restored' | 'hidden';
export type AdminReviewTimelineActor = 'admin' | 'customer';

export interface AdminReviewTimelineEntry {
  eventKey: AdminReviewTimelineEventKey;
  actor: AdminReviewTimelineActor;
  status?: AdminReviewStatus;
  note: string;
  timestamp: string;
}

export interface AdminReview {
  id: string;
  productId: string;
  productName: string;
  customerName: string;
  customerEmail: string;
  rating: number;
  text: string;
  photos: string[];
  status: AdminReviewStatus;
  visible: boolean;
  pinned: boolean;
  featured: boolean;
  reportCount: number;
  moderatorNotes: string;
  timeline: AdminReviewTimelineEntry[];
  createdAt: string;
  updatedAt: string;
}

export interface AdminReviewListFilters {
  search: string;
  status: 'all' | AdminReviewStatus;
  rating: 'all' | number;
  page: number;
  pageSize: number;
}

export interface AdminReviewsListResult {
  items: AdminReview[];
  total: number;
  page: number;
  pageSize: number;
}
