import type { DetailedReport, CombinedReport } from '../core/types';
import type { ReportSummary } from '../use-cases/report-use-cases';

export interface IReportService {
  // Single session reports
  getSessionReport(label: string): DetailedReport | null;
  waitForSessionReport(label: string, timeoutMs?: number): Promise<DetailedReport>;
  hasSessionReport(label: string): boolean;
  
  // Combined reports
  generateCombinedReport(): CombinedReport;
  getCombinedReportAsync(): Promise<CombinedReport>;
  
  // Report watching
  watchSessionReport(label: string, callback: (report: DetailedReport) => void): () => void;
  watchAllReports(callback: (sessionLabel: string, report: DetailedReport) => void): () => void;
  
  // Utilities
  getReportSummary(): ReportSummary;
  exportReports(format: 'json' | 'html'): Promise<string>;
  clearAllReports(): void;
  
  // Validation
  validateSessionReport(sessionLabel: string): boolean;
  getReportValidationErrors(sessionLabel: string): string[];
}
