import * as LitHtml from '../../../ui/lit-html/lit-html.js';
declare global {
interface HTMLElementTagNameMap {
'devtools-timeline-webvitals': WebVitalsTimeline;
}
}
export interface Event {
timestamp: number;
}
export interface Timebox {
start: number;
duration: number;
}
export interface WebVitalsFCPEvent {
timestamp: number;
}
export interface WebVitalsLCPEvent {
timestamp: number;
}
export interface WebVitalsLayoutShiftEvent {
timestamp: number;
}
interface WebVitalsTimelineTask {
start: number;
duration: number;
}
interface WebVitalsTimelineData {
startTime: number;
duration: number;
fcps?: WebVitalsFCPEvent[];
lcps?: WebVitalsLCPEvent[];
layoutShifts?: WebVitalsLayoutShiftEvent[];
longTasks?: WebVitalsTimelineTask[];
mainFrameNavigations?: number[];
maxDuration?: number;
}
export interface Marker {
type: MarkerType;
timestamp: number;
timestampLabel: string;
timestampMetrics: TextMetrics;
widthIncludingLabel: number;
widthIncludingTimestamp: number;
}
export declare const enum MarkerType {
Good = "Good",
Medium = "Medium",
Bad = "Bad"
}
export declare const LINE_HEIGHT = 24;
export declare const LONG_TASK_THRESHOLD = 50;
type Constructor = {
new (...args: unknown[]): T;
};
export declare function assertInstanceOf(instance: any, constructor: Constructor): asserts instance is T;
export declare class WebVitalsTimeline extends HTMLElement {
#private;
static readonly litTagName: import("../../../ui/lit-html/static.js").Static;
constructor();
set data(data: WebVitalsTimelineData);
getContext(): CanvasRenderingContext2D;
getLineHeight(): number;
hideOverlay(): void;
showOverlay(content: LitHtml.TemplateResult): void;
/**
* Transform from time to pixel offset
* @param x
*/
tX(x: number): number;
/**
* Transform from duration to pixels
* @param duration
*/
tD(duration: number): number;
setSize(width: number, height: number): void;
connectedCallback(): void;
disconnectedCallback(): void;
getTimeSinceLastMainFrameNavigation(time: number): number;
render(): void;
}
export {};