import { BaseAccessibilityTest, TestResult, TestContext } from '../base-test';
export interface LighthouseMetrics {
    performance: number;
    accessibility: number;
    bestPractices: number;
    seo: number;
    pwa: number;
    firstContentfulPaint: number;
    largestContentfulPaint: number;
    firstInputDelay: number;
    cumulativeLayoutShift: number;
    speedIndex: number;
    totalBlockingTime: number;
    timeToInteractive: number;
}
export interface LighthouseResult extends TestResult {
    metrics: LighthouseMetrics;
    score: number;
    recommendations: string[];
    budgetExceeded: boolean;
    duration?: number;
    url?: string;
    testName?: string;
    description?: string;
    error?: string;
}
export interface LighthouseOptions {
    categories?: string[];
    formFactor?: 'mobile' | 'desktop';
    throttling?: 'devtools' | 'provided' | 'simulated';
    budget?: Partial<LighthouseMetrics>;
}
export declare class LighthouseTest extends BaseAccessibilityTest {
    name: string;
    description: string;
    category: string;
    priority: string;
    standards: string[];
    private options;
    private budget;
    constructor(options?: LighthouseOptions);
    run(context: TestContext): Promise<TestResult>;
    private isLighthouseAvailable;
    private runLighthouseAudit;
    private calculateOverallScore;
    private checkBudget;
    private generateRecommendations;
    private getDefaultMetrics;
    private getSimulatedMetrics;
    setBudget(budget: Partial<LighthouseMetrics>): void;
    getBudget(): Partial<LighthouseMetrics>;
    setOptions(options: LighthouseOptions): void;
    getOptions(): LighthouseOptions;
}
//# sourceMappingURL=lighthouse-test.d.ts.map