type TempusCallback = (time: number, deltaTime: number) => void;
type TempusOptions = {
    priority?: number;
    fps?: number | string;
    label?: string;
};
type UID = number;

declare class Framerate {
    callbacks: {
        callback: TempusCallback;
        priority: number;
        uid: UID;
        label: string;
        samples: number[];
    }[];
    fps: number | string;
    time: number;
    lastTickDate: number;
    framesCount: number;
    constructor(fps?: number | string);
    get isRelativeFps(): boolean;
    get maxFramesCount(): number;
    get executionTime(): number;
    dispatch(time: number, deltaTime: number): void;
    raf(time: number, deltaTime: number): void;
    add({ callback, priority, label, }: {
        callback: TempusCallback;
        priority: number;
        label: string;
    }): (() => void) | undefined;
    remove(uid: UID): void;
}
declare class TempusImpl {
    framerates: Record<number | string, Framerate>;
    time: number;
    fps?: number;
    usage: number;
    constructor();
    add(callback: TempusCallback, { priority, fps, label, }?: TempusOptions): (() => void) | undefined;
    private raf;
    patch(): void;
    unpatch(): void;
}
declare const Tempus: TempusImpl;

export { type TempusCallback, type TempusOptions, type UID, Tempus as default };
