export type EventHookOn<T = any> = (fn: (param: T) => void) => {
    off: () => void;
};
export type EventHookOff<T = any> = (fn: (param: T) => void) => void;
export type EventHookTrigger<T = any> = (param: T) => void;
export interface EventHook<T = any> {
    on: EventHookOn<T>;
    off: EventHookOff<T>;
    trigger: EventHookTrigger<T>;
}
/**
 * Utility for creating event hooks on the fly
 */
export declare function createEventHook<T = any>(): EventHook<T>;
