import type { DetailedReport } from '../core/types';

export interface IReportRepository {
  // Basic report access
  getReportData(resultKey: string): any | null;
  hasReport(resultKey: string): boolean;
  clearReport(resultKey: string): void;
  
  // Enhanced report management
  getAllReports(): Record<string, any>;
  getReportMetadata(resultKey: string): ReportMetadata | null;
  waitForReport(resultKey: string, timeoutMs?: number): Promise<any>;
  watchReport(resultKey: string, callback: (report: any) => void): () => void;
  
  // Window variable management
  generateResultKey(sessionLabel: string): string;
  getWindowVariable(key: string): any;
  setWindowVariable(key: string, value: any): void;
  deleteWindowVariable(key: string): void;
  
  // Report utilities
  getReportSize(resultKey: string): number;
  validateReport(reportData: any): boolean;
}

export interface ReportMetadata {
  size: number;
  generatedAt: Date;
  sessionLabel: string;
  stats: any;
  isValid: boolean;
}
