export interface FrameTiming { frameId: number; startTime: number; endTime: number; durationMs: number; dropped: boolean; styleRecalcMs?: number; layoutMs?: number; paintMs?: number; compositeMs?: number; gpuMs?: number; } export interface FrameMetricsSummary { totalFrames: number; droppedFrames: number; avgFps: number; frameBudgetMs: number; p95FrameTimeMs: number; maxFrameTimeMs: number; minFrameTimeMs: number; } export interface LongTaskInfo { startTime: number; durationMs: number; functionName?: string; file?: string; line?: number; column?: number; callStack?: StackFrameInfo[]; correlatedFrameId?: number; } export interface StackFrameInfo { functionName: string; file: string; line: number; column: number; } export type DOMSignalType = 'forced_reflow' | 'style_recalc' | 'layout_invalidation' | 'dom_mutation'; export interface DOMSignal { type: DOMSignalType; timestamp: number; durationMs?: number; selector?: string; affectedNodes?: number; frameId?: number; stackTrace?: StackFrameInfo[]; properties?: { name: string; accessType: 'read' | 'write'; }[]; } export interface GPUEvent { type: 'sync' | 'texture_upload' | 'raster' | 'composite'; timestamp: number; durationMs: number; element?: string; layerId?: number; frameId?: number; } export interface PaintEvent { timestamp: number; paintDurationMs: number; rasterDurationMs?: number; bounds?: { x: number; y: number; width: number; height: number; }; layerCount?: number; frameId?: number; } export interface TraceSnapshotMetadata { browserVersion?: string; userAgent?: string; viewport?: { width: number; height: number; }; devicePixelRatio?: number; timestamp: string; scenario?: string; fpsTarget: number; url?: string; adapterType: string; platform: string; } export interface TraceSnapshot { id: string; name: string; durationMs: number; frameTimings: FrameTiming[]; frameMetrics: FrameMetricsSummary; longTasks: LongTaskInfo[]; domSignals: DOMSignal[]; gpuEvents: GPUEvent[]; paintEvents: PaintEvent[]; metadata: TraceSnapshotMetadata; rawEvents?: unknown[]; } export interface TraceSnapshotOptions { id?: string; name: string; fpsTarget?: number; includeRawEvents?: boolean; } export declare function calculateFrameMetrics(frameTimings: FrameTiming[], fpsTarget: number): FrameMetricsSummary; export declare function generateTraceId(): string; export declare function createEmptyTraceSnapshot(options: TraceSnapshotOptions): TraceSnapshot;