import { TemplateResult } from 'lit-html';
type MonitorFpsDetail = {
fps: number | null;
refreshRate: number | null;
frameTimeAvg: number | null;
frameTimeP95: number | null;
frameTimeMax: number | null;
droppedFrames: number;
jankFrames: number;
longFrames: number;
};
declare class MonitorFps extends HTMLElement {
#private;
requestRender: () => void;
accessor paused: boolean;
accessor canvasEl: HTMLCanvasElement | null;
connectedCallback(): void;
disconnectedCallback(): void;
afterRender(): void;
render(): TemplateResult;
}
type CoreWebVitals = {
LCP: number | null;
INP: number | null;
CLS: number;
FCP: number | null;
TBT: number;
};
type NavigationMetrics = {
ttfb: number | null;
domInteractive: number | null;
loadTime: number | null;
};
type ResourceSummary = {
js: {
count: number;
size: number;
};
css: {
count: number;
size: number;
};
img: {
count: number;
size: number;
};
other: {
count: number;
size: number;
};
totalSize: number;
};
type MemoryUsage = {
jsHeapSizeLimit: number;
totalJSHeapSize: number;
usedJSHeapSize: number;
} | null;
interface PerformanceMetrics {
coreWebVitals: CoreWebVitals;
navigation: NavigationMetrics;
resources: ResourceSummary;
memory: MemoryUsage;
fps: number | null;
longTasks: {
count: number;
totalDuration: number;
};
}
interface ConnectionInfo {
effectiveType: string;
rtt: number;
}
declare global {
interface Performance {
memory?: {
jsHeapSizeLimit: number;
totalJSHeapSize: number;
usedJSHeapSize: number;
};
}
interface Navigator {
connection?: {
effectiveType: string;
rtt: number;
addEventListener: (type: string, listener: EventListener) => void;
removeEventListener: (type: string, listener: EventListener) => void;
};
}
}
declare class Monitor extends HTMLElement {
requestRender: () => void;
accessor metrics: PerformanceMetrics;
accessor network: ConnectionInfo;
private observers;
private memoryInterval;
private clsEntries;
private inpEntries;
private maxINP;
private longTaskEntries;
private trendHistory;
private maxTrendLength;
connectedCallback(): void;
disconnectedCallback(): void;
handleFpsUpdate(event: CustomEvent): void;
private handlePageLoad;
private initObservers;
private collectInitialMetrics;
private collectNavigationTiming;
private processPerformanceEntry;
private calculateSessionWindowCLS;
private processResourceEntries;
private calculateLongTasksAndTBT;
private startMemoryMonitoring;
private stopMemoryMonitoring;
private initNetworkMonitoring;
private stopNetworkMonitoring;
private updateNetworkInfo;
private updateTrend;
private getTrendDirection;
private getOverallStatus;
render(): TemplateResult;
private renderExpanded;
private renderMetricBox;
private renderVitalsAndTiming;
private renderRealtime;
private renderMemory;
private renderNetworkInfo;
private renderResources;
}
export { Monitor as M, MonitorFps as a };