import { Optional } from '@ephox/katamari';
import { SugarElement } from '@ephox/sugar';
export interface ElementAndHandler {
    readonly element: SugarElement<Node>;
    readonly descHandler: CurriedHandler;
}
export interface CurriedHandler {
    readonly purpose: string;
    readonly cHandler: Function;
}
export interface UncurriedHandler {
    readonly purpose: string;
    readonly handler: Function;
}
export interface UidAndHandler {
    readonly id: string;
    readonly descHandler: CurriedHandler;
}
export interface EventRegistry {
    readonly registerId: (extraArgs: any[], id: string, events: Record<EventName, UncurriedHandler>) => void;
    readonly unregisterId: (id: string) => void;
    readonly filterByType: (type: string) => UidAndHandler[];
    readonly find: (isAboveRoot: (elem: SugarElement<Node>) => boolean, type: string, target: SugarElement<Node>) => Optional<ElementAndHandler>;
}
export type EventName = string;
export type Uid = string;
export declare const EventRegistry: () => EventRegistry;
//# sourceMappingURL=EventRegistry.d.ts.map