/** * @file Performance Monitoring Hook * @description Enterprise-grade performance monitoring with Web Vitals and custom metrics */ interface PerformanceMetrics { CLS?: number; FCP?: number; INP?: number; LCP?: number; TTFB?: number; customMetrics: Map; resourceTimings: PerformanceResourceTiming[]; longTasks: PerformanceEntry[]; memoryUsage?: { usedJSHeapSize: number; totalJSHeapSize: number; jsHeapSizeLimit: number; }; } interface PerformanceThresholds { CLS?: number; FCP?: number; INP?: number; LCP?: number; TTFB?: number; memoryUsage?: number; } interface UsePerformanceMonitorOptions { enableWebVitals?: boolean; enableResourceTiming?: boolean; enableLongTaskDetection?: boolean; enableMemoryMonitoring?: boolean; sampleRate?: number; thresholds?: PerformanceThresholds; onMetricUpdate?: (metric: Partial) => void; onThresholdExceeded?: (metricName: string, value: number, threshold: number) => void; reportingEndpoint?: string; batchSize?: number; flushInterval?: number; } export declare function usePerformanceMonitor(options?: UsePerformanceMonitorOptions): { metrics: PerformanceMetrics; trackMetric: (name: string, value: number) => void; markNavigationTiming: (name: string) => (() => void) | undefined; getResourceStats: () => { totalResources: number; totalSize: number; totalDuration: number; byType: Record; slowResources: PerformanceResourceTiming[]; }; flushMetrics: () => void; }; export type { PerformanceMetrics, PerformanceThresholds, UsePerformanceMonitorOptions };