export type FramePerfReason = "scroll" | "input" | "stream" | "resize" | "data" | "selection" | "manual" | "unknown"; export type FramePerfRowBucketFallback = Readonly<{ plane: string; reason: "dirty-ratio" | "candidate-ratio"; dirtyRows: number; planeNodes: number; candidates?: number; }>; export type FramePerfMailboxFailure = Readonly<{ id: string; queued: number; dropped: number; }>; export type FramePerfSample = Readonly<{ frameId: number; reason: FramePerfReason; startedAt: number; durationMs: number; renderManagerMs: number; commitMs: number; domFlushMs?: number; stdoutFlushMs?: number; dirtyRows: number | null; activePlanes: readonly string[] | null; scannedNodes: number; paintedNodes: number; rowBucketFallbacks?: readonly FramePerfRowBucketFallback[]; coalescedInvalidates: number; frameTaskCount: number; coalescedFrameTasks: number; frameTaskQueueDepthBeforeRun: number; frameTaskQueueDepthAfterRun: number; remainingFrameTasks: number; droppedUpdates: number; mailboxFailure?: FramePerfMailboxFailure; queueDepth: number; liveReasons?: readonly string[]; }>; export type FramePerfMetricStats = Readonly<{ avg: number; max: number; min: number; }>; export type FramePerfDirtyRowsStats = Readonly<{ avg: number; max: number; sampledFrames: number; fullFrames: number; }>; export type FramePerfSummary = Readonly<{ frames: number; firstFrameId: number | null; latestFrameId: number | null; windowMs: number; durationMs: FramePerfMetricStats; renderManagerMs: FramePerfMetricStats; commitMs: FramePerfMetricStats; domFlushMs: FramePerfMetricStats; stdoutFlushMs: FramePerfMetricStats; dirtyRows: FramePerfDirtyRowsStats; scannedNodes: FramePerfMetricStats; paintedNodes: FramePerfMetricStats; coalescedInvalidates: number; coalescedFrameTasks: number; droppedUpdates: number; maxQueueDepth: number; rowBucketFallbacks: number; reasons: Partial>; activePlanes: Record; }>; export declare function summarizeFramePerf(samples: readonly FramePerfSample[]): FramePerfSummary; export declare function framePerfNow(): number; export declare function mergeFramePerfReason(prev: FramePerfReason | undefined, next: FramePerfReason | undefined): FramePerfReason;