import type { DetailedReport, CombinedReport } from '../core/types';

export interface IGetSessionReportUseCase {
  execute(sessionLabel: string): DetailedReport | null;
}

export interface IWaitForSessionReportUseCase {
  execute(sessionLabel: string, timeoutMs?: number): Promise<DetailedReport>;
}

export interface IWatchSessionReportUseCase {
  execute(sessionLabel: string, callback: (report: DetailedReport) => void): () => void;
}

export interface IGenerateDetailedCombinedReportUseCase {
  execute(): CombinedReport;
}

export interface IExportReportsUseCase {
  execute(format: 'json' | 'html'): Promise<string>;
}

export interface IGetReportSummaryUseCase {
  execute(): ReportSummary;
}

export interface ReportSummary {
  totalReports: number;
  totalTests: number;
  totalPasses: number;
  totalFailures: number;
  reportSizes: Record<string, number>;
  oldestReport?: Date;
  newestReport?: Date;
  averageTestDuration?: number;
}
