export interface Timing {
    startTime: number;
    duration: number;
}
/**
 * A meter for measuring timings. Measurements are stored using the browser's
 * performance APIs, which provide high-resolution timestamps, as well as
 * provides visibility in the browser's developer tooling.
 */
export declare class TimingMeter {
    readonly name: string;
    private readonly perf;
    private measures;
    private nextId;
    constructor(name: string, perf?: Performance);
    /**
     * Clears any measurements from the buffer.
     */
    clearMeasurements(): void;
    /**
     * Measures the execution time of a function.
     *
     * @param target A function to execute and measure.
     */
    measure<T>(target: () => T): T;
    /**
     * Measures the time for a promise to resolve, either successfully or not.
     *
     * @param target The promise to measure.
     */
    measure<T>(target: Promise<T>): Promise<T>;
    /**
     * Returns a list of measurements that have been recorded, and clears the
     * internal measurement buffer.
     */
    takeMeasurements(): Timing[];
    /**
     * Returns the last measurement to have been recorded, and clears the internal
     * measurement buffer.
     */
    takeLastMeasurement(): Timing | undefined;
    private begin;
    private end;
}
export declare const paintTime: TimingMeter;
