import type { RenderableDef, ImageDef, TextDef, LayerDef } from "@expofp/renderer";
import type { ImageDefWithParentBounds } from "./index";
export type Disposer = () => void;
export type PtScaleHandler = (scale: number) => RenderableDef | undefined;
export type RollHandler = (angle: number) => ImageDef | TextDef | (ImageDef | TextDef)[] | undefined;
export type LayerImagesHandler = () => Promise<{
    layer: LayerDef;
    children: ImageDefWithParentBounds[];
}>;
export declare class HandlerRegistry<T extends (...args: any[]) => any> {
    private handlers;
    register(name: string, fn: T): Disposer;
    unregisterByName(name: string): void;
    unregisterByPrefix(prefix: string): void;
    invoke(...args: Parameters<T>): Array<NonNullable<ReturnType<T>>>;
    clear(): void;
}
//# sourceMappingURL=HandlerRegistry.d.ts.map