import type * as LitHtml from '../../../ui/lit-html/lit-html.js';
import { MarkerType, type Event, type Marker, type Timebox, type WebVitalsTimeline } from './WebVitalsTimeline.js';
type GetMarkerTypeCallback = (event: Event) => MarkerType;
type GetMarkerOverlayCallback = (marker: Marker) => LitHtml.TemplateResult;
type GetTimeboxOverlayCallback = (marker: Timebox) => LitHtml.TemplateResult;
declare abstract class WebVitalsLane {
protected context: CanvasRenderingContext2D;
protected timeline: WebVitalsTimeline;
protected theme: {
[key: string]: string;
};
constructor(timeline: WebVitalsTimeline);
abstract handlePointerMove(x: number | null): void;
abstract handleClick(x: number | null): void;
protected tX(x: number): number;
protected tD(x: number): number;
protected renderLaneLabel(label: string): void;
render(): void;
}
export declare class WebVitalsEventLane extends WebVitalsLane {
#private;
constructor(timeline: WebVitalsTimeline, label: string, getMarkerType: GetMarkerTypeCallback, getMarkerOverlay?: GetMarkerOverlayCallback);
handlePointerMove(x: number | null): void;
handleClick(_: number | null): void;
setEvents(markers: readonly Event[]): void;
render(): void;
}
export declare class WebVitalsTimeboxLane extends WebVitalsLane {
#private;
constructor(timeline: WebVitalsTimeline, label: string, getTimeboxOverlay?: GetTimeboxOverlayCallback);
handlePointerMove(x: number | null): void;
handleClick(_: number | null): void;
setTimeboxes(boxes: readonly Timebox[]): void;
render(): void;
}
export {};