import { BenchmarkResult } from './index'; import { default as baseline } from './baselines/v1.15.0.json'; export interface Stage1ScenarioResult { id: string; benchmark: BenchmarkResult; passed: boolean; failures: string[]; baselineMinFps?: number; } export interface Stage1BrowserReport { timestamp: number; version: string; scenarios: Stage1ScenarioResult[]; allPassed: boolean; regressionThreshold: number; } export interface BaselineScenario { minAvgFps?: number; maxAvgFrameTimeMs?: number; maxAvgFrameUs?: number; dpr?: number; points?: number; description?: string; } /** When wall-clock frame count is below this, headless rAF is unreliable — use renderFps. */ export declare const HEADLESS_LOW_FRAME_THRESHOLD = 30; /** Headless smoke floors (renderFps or effective FPS). Desktop uses baseline minAvgFps. */ export declare const SMOKE_FLOORS: Record; /** Pick wall or render FPS depending on headless throttling artifacts. */ export declare function effectiveBenchmarkFps(result: Pick, isHeadless: boolean): number; export declare function getBaseline(): typeof baseline; /** Compare a benchmark result against v1.15 baseline for a scenario */ export declare function compareScenarioToBaseline(scenarioId: string, result: BenchmarkResult | { avgFrameUs: number; backend?: string; }): { passed: boolean; failures: string[]; }; /** Build a full Stage 1 report from scenario results */ export declare function buildStage1Report(scenarios: Stage1ScenarioResult[]): Stage1BrowserReport;