import EventEmitter from './EventEmitter';
type AsArray
= P extends unknown[] ? P : [P];
export type EventHandlerFunction
= (...parameters: AsArray
) => void;
export type EventListenerRemover = () => void;
export type EventListenFunction = (eventEmitter: EventEmitter, handler: EventHandlerFunction) => EventListenerRemover;
export type EventEmitFunction = (eventEmitter: EventEmitter, ...parameters: AsArray) => void;
export type EventListenerHook = (eventEmitter: EventEmitter | null | undefined, handler: EventHandlerFunction) => void;
/**
* Listen for an event
* @param eventEmitter The event emitter to listen to
* @param event The event to listen for
* @param handler The handler to call when the event is emitted
* @returns A function to stop listening for the event
*/
export declare function listenForEvent(eventEmitter: EventEmitter, event: string, handler: EventHandlerFunction): EventListenerRemover;
export declare function makeListenFunction(event: string): EventListenFunction;
export declare function makeEmitFunction(event: string): EventEmitFunction;
export declare function makeUseListenerFunction(event: string): EventListenerHook;
/**
* Create listener, emitter, and hook functions for an event
* @param event Name of the event to create functions for
* @returns Listener, Emitter, and Hook functions for the event
*/
export declare function makeEventFunctions(event: string): {
listen: EventListenFunction;
emit: EventEmitFunction;
useListener: EventListenerHook;
};
export {};
//# sourceMappingURL=EventUtils.d.ts.map