import { AccessibilityResult } from '../../types/audit-results';
interface EnhancedReportSummary {
    testedPages: number;
    passedPages: number;
    failedPages: number;
    totalErrors: number;
    totalWarnings: number;
    avgAccessibilityScore: number;
    avgPerformanceScore: number;
}
/**
 * Stream Event Types for Tauri Integration
 */
export type StreamEventType = 'init' | 'progress' | 'page_result' | 'summary' | 'error' | 'complete';
export interface StreamEvent {
    type: StreamEventType;
    sessionId: string;
    timestamp: string;
    data: unknown;
}
export interface InitEvent extends StreamEvent {
    type: 'init';
    data: {
        sessionId: string;
        config: StreamingConfiguration;
        totalPages: number;
    };
}
export interface ProgressEvent extends StreamEvent {
    type: 'progress';
    data: {
        current: number;
        total: number;
        currentUrl: string;
        timeElapsed: number;
        estimatedRemaining?: number;
        stage: 'parsing_sitemap' | 'testing_pages' | 'generating_report';
        percentage: number;
    };
}
export interface PageResultEvent extends StreamEvent {
    type: 'page_result';
    data: AccessibilityResult & {
        streamingMeta: {
            processedAt: string;
            processingTime: number;
            chunkId: string;
            sequenceNumber: number;
        };
    };
}
export interface SummaryEvent extends StreamEvent {
    type: 'summary';
    data: EnhancedReportSummary;
}
export interface ErrorEvent extends StreamEvent {
    type: 'error';
    data: {
        error: string;
        url?: string;
        recoverable: boolean;
        stage: string;
    };
}
export interface CompleteEvent extends StreamEvent {
    type: 'complete';
    data: {
        totalTime: number;
        totalPages: number;
        successfulPages: number;
        failedPages: number;
        summary: EnhancedReportSummary;
    };
}
export interface StreamingConfiguration {
    enabled: boolean;
    chunkSize: number;
    bufferTimeout: number;
    includeDetailedResults: boolean;
    compressResults: boolean;
}
/**
 * Streaming Reporter for Real-time Tauri Integration
 * Outputs NDJSON (Newline Delimited JSON) for efficient parsing
 */
export declare class StreamingReporter {
    private outputStream;
    private sessionId;
    private config;
    private startTime;
    private sequenceNumber;
    private resultBuffer;
    private bufferTimeout?;
    constructor(outputStream: NodeJS.WritableStream, sessionId: string, config?: StreamingConfiguration);
    /**
     * Initialize streaming session
     */
    init(totalPages: number, config: any): void;
    /**
     * Report progress updates
     */
    reportProgress(data: {
        current: number;
        total: number;
        currentUrl: string;
        stage: 'parsing_sitemap' | 'testing_pages' | 'generating_report';
    }): void;
    /**
     * Report individual page result
     */
    reportPageResult(result: AccessibilityResult, processingTime: number): void;
    /**
     * Report summary data
     */
    reportSummary(summary: EnhancedReportSummary): void;
    /**
     * Report errors
     */
    reportError(error: string, url?: string, stage?: string, recoverable?: boolean): void;
    /**
     * Report completion
     */
    complete(summary: EnhancedReportSummary, totalPages: number, successfulPages: number): void;
    /**
     * Get real-time metrics
     */
    getRealTimeMetrics(): {
        pagesPerSecond: number;
        memoryUsage: number;
        timeElapsed: number;
    };
    /**
     * Write event to output stream in NDJSON format
     */
    private writeEvent;
    /**
     * Generate unique chunk ID
     */
    private generateChunkId;
    /**
     * Maybe flush buffer based on configuration
     */
    private maybeFlushBuffer;
    /**
     * Flush result buffer
     */
    private flushBuffer;
    /**
     * Create streaming reporter from options
     */
    static create(sessionId: string, outputStream?: NodeJS.WritableStream, options?: Partial<StreamingConfiguration>): StreamingReporter;
    /**
     * Cleanup resources
     */
    cleanup(): void;
}
export {};
//# sourceMappingURL=streaming-reporter.d.ts.map