import { RenderEntry, ComponentRenderStats, RenderPhase, RenderReason } from '../render-tracker'; /** * Render metrics for a component */ export interface RenderMetrics { /** Total render count */ readonly renderCount: number; /** Last render duration (ms) */ readonly lastRenderTime: number; /** Average render time (ms) */ readonly averageRenderTime: number; /** Minimum render time (ms) */ readonly minRenderTime: number; /** Maximum render time (ms) */ readonly maxRenderTime: number; /** 95th percentile render time */ readonly p95RenderTime: number; /** Whether last render was slow */ readonly isSlowRender: boolean; /** Number of wasted renders */ readonly wastedRenders: number; /** Wasted render percentage */ readonly wastedRenderRate: number; /** Render reasons breakdown */ readonly renderReasons: Record; /** Total render time (ms) */ readonly totalRenderTime: number; } /** * Hook options */ export interface UseRenderMetricsOptions { /** Slow render threshold (ms) */ readonly slowThreshold?: number; /** Enable automatic tracking */ readonly autoTrack?: boolean; /** Track props changes */ readonly trackProps?: boolean; /** Track state changes */ readonly trackState?: boolean; /** Callback on slow render */ readonly onSlowRender?: (entry: RenderEntry) => void; /** Callback on wasted render */ readonly onWastedRender?: (entry: RenderEntry) => void; /** Enable debug logging */ readonly debug?: boolean; } /** * Hook return value */ export interface UseRenderMetricsReturn { /** Current render metrics */ readonly metrics: RenderMetrics; /** Total render count */ readonly renderCount: number; /** Last render duration */ readonly lastRenderTime: number; /** Average render time */ readonly averageRenderTime: number; /** Whether currently slow */ readonly isSlowRender: boolean; /** Start tracking a render (returns stop function) */ readonly trackRender: (phase?: RenderPhase) => () => void; /** Start tracking an interaction */ readonly trackInteraction: (name: string) => () => void; /** Get full component stats */ readonly getStats: () => ComponentRenderStats | null; /** Mark render as wasted */ readonly markWastedRender: () => void; /** Reset metrics */ readonly reset: () => void; } /** * Hook for component render metrics */ export declare function useRenderMetrics(componentName: string, options?: UseRenderMetricsOptions): UseRenderMetricsReturn; /** * Hook to measure a specific render phase */ export declare function useRenderPhaseMetrics(componentName: string, phase: RenderPhase): { duration: number; measure: () => () => void; }; /** * Hook for render profiling during development */ export declare function useRenderProfiler(componentName: string): { onRender: (id: string, phase: 'mount' | 'update', actualDuration: number, baseDuration: number, startTime: number, commitTime: number) => void; getReport: () => string; }; /** * Hook to detect unnecessary re-renders */ export declare function useWastedRenderDetector(componentName: string, deps: unknown[]): { wasWasted: boolean; reason: string | null; };