import { NetworkRequest, NetworkResponse } from '../types/index.js';
export interface PerformanceMetrics {
    navigation: {
        domContentLoaded?: number;
        loadComplete?: number;
        firstPaint?: number;
        firstContentfulPaint?: number;
        largestContentfulPaint?: number;
    };
    resources: {
        total: number;
        byType: Record<string, ResourceMetrics>;
        critical: CriticalResource[];
        waterfall: WaterfallEntry[];
    };
    timing: {
        totalDuration: number;
        networkTime: number;
        renderTime: number;
        jsExecutionTime?: number;
    };
    bottlenecks: PerformanceBottleneck[];
    recommendations: string[];
}
interface ResourceMetrics {
    count: number;
    totalSize: number;
    totalDuration: number;
    avgDuration: number;
    cached: number;
    failed: number;
}
interface CriticalResource {
    url: string;
    type: string;
    duration: number;
    size: number;
    priority: 'high' | 'medium' | 'low';
    blockingTime?: number;
}
interface WaterfallEntry {
    url: string;
    startTime: number;
    endTime: number;
    duration: number;
    type: string;
    status: number;
    parallelRequests: number;
}
interface PerformanceBottleneck {
    type: 'slow-resource' | 'blocking-resource' | 'failed-resource' | 'large-resource' | 'redirect-chain';
    description: string;
    impact: 'high' | 'medium' | 'low';
    resources: string[];
    suggestions: string[];
}
export declare class PerformanceProfiler {
    analyzePerformance(requests: NetworkRequest[], responses: NetworkResponse[], pageMetrics?: any): PerformanceMetrics;
    private calculateResourceMetrics;
    private generateWaterfall;
    private identifyCriticalResources;
    private detectBottlenecks;
    private calculateTiming;
    private generateRecommendations;
}
export {};
//# sourceMappingURL=performance-profiler.d.ts.map