import { ProgressState } from './progress-tracker'; import { AuditLogger, AuditEvent } from './audit-logger'; import { ExportLogger } from './export-logger'; import { LogAnalysisResult } from './log-analyzer'; export interface ExportReport { sessionId: string; startTime: Date; endTime: Date; duration: number; summary: ExportSummary; documentMappings: ExportDocumentMapping[]; folderStructure: FolderStructureReport; errors: ExportErrorReport[]; statistics: ExportStatistics; auditTrail?: AuditEvent[]; logAnalysis?: LogAnalysisResult; } export interface ExportSummary { totalDocuments: number; successfulExports: number; failedExports: number; skippedDocuments: number; successRate: number; averageProcessingTime: number; totalDataExported: number; exportSpeed: number; outputDirectory: string; exportFormats: string[]; formatResults?: FormatSummary; } export interface FormatSummary { totalFormats: number; successfulFormats: number; failedFormats: number; formatSuccessRates: { [format: string]: number; }; formatCounts: { [format: string]: { success: number; failed: number; total: number; }; }; formatDirectories: { [format: string]: string; }; } export interface ExportDocumentMapping { quipDocumentId: string; quipDocumentTitle: string; quipUrl: string; folderName?: string; localPath: string; relativePath: string; status: 'success' | 'failed' | 'skipped'; error?: string; fileSize?: number; processingTime?: number; exportFormat?: string; createdAt: Date; formatResults?: { [format: string]: FormatExportResult; }; } export interface FormatExportResult { format: string; success: boolean; filePath?: string; fileSize?: number; error?: string; processingTime?: number; } export interface FolderStructureReport { rootDirectory: string; totalFolders: number; folderHierarchy: FolderNode[]; documentDistribution: { [folderName: string]: number; }; } export interface FolderNode { name: string; path: string; documentCount: number; totalSize: number; children: FolderNode[]; } export interface ExportErrorReport { timestamp: Date; documentId?: string; documentTitle?: string; folderName?: string; errorType: string; errorMessage: string; stackTrace?: string; context?: any; severity: 'low' | 'medium' | 'high' | 'critical'; } export interface ExportStatistics { documentsPerHour: number; averageFileSize: number; largestFile: { title: string; size: number; path: string; }; smallestFile: { title: string; size: number; path: string; }; formatDistribution: { [format: string]: number; }; errorDistribution: { [errorType: string]: number; }; processingTimeDistribution: { under30s: number; under2min: number; under5min: number; over5min: number; }; folderStatistics: { [folderName: string]: { documentCount: number; totalSize: number; averageSize: number; successRate: number; }; }; } export interface ExportReportOptions { includeAuditTrail: boolean; includeErrorDetails: boolean; includeStatistics: boolean; includeLogAnalysis: boolean; includeFolderStructure: boolean; outputFormat: 'json' | 'html' | 'csv' | 'markdown'; outputDirectory: string; generateSummaryOnly: boolean; } export declare class ExportReporter { private logger; private auditLogger?; private documentMappings; private errors; private startTime; private endTime?; private outputDirectory; constructor(logger: ExportLogger, outputDirectory: string, auditLogger?: AuditLogger); recordDocumentStart(quipDocumentId: string, quipDocumentTitle: string, quipUrl: string, folderName?: string): void; recordDocumentSuccess(quipDocumentId: string, localPath: string, details: { fileSize?: number; processingTime?: number; exportFormat?: string; }): void; recordMultiFormatResults(quipDocumentId: string, formatResults: { [format: string]: FormatExportResult; }): void; recordDocumentFailure(quipDocumentId: string, error: Error, context?: any): void; recordError(error: Error, documentId?: string, documentTitle?: string, folderName?: string, context?: any): void; generateReport(finalState: ProgressState, options?: Partial): Promise; generateQuickSummary(finalState: ProgressState): string; private generateSummary; private generateFormatSummary; private generateFolderStructureReport; private generateStatistics; private saveReport; private saveJsonReport; private saveHtmlReport; private saveCsvReport; private saveMarkdownReport; private generateHtmlReport; private generateCsvReport; private generateMarkdownReport; private determineErrorSeverity; private formatBytes; private formatDuration; } //# sourceMappingURL=export-reporter.d.ts.map