export interface MetricData { rating: 'good' | 'needs-improvement' | 'poor'; value: number; element?: Element | Node | null; score: number; } export interface Metrics { LCP: Map; INP: Map; CLS: Map; TTFB: Map; FCP: Map; } export interface EventData { type: keyof Metrics; data: MetricData; } interface CustomEventMap { 'reshepe-web-vitals-data-set': CustomEvent; 'reshepe-web-vitals-data-clear': CustomEvent; } declare global { interface Window { reshepe_web_vitals: Metrics; } interface Document { addEventListener(type: K, listener: (this: Document, ev: CustomEventMap[K]) => void): void; dispatchEvent(ev: CustomEventMap[K]): boolean; } }