export declare type Listener = (...payload: any) => void;
export interface ListenersMap {
    [propName: string]: Listener[];
}
/**
 * EventManager is a class to manage event listeners.
 */
export declare class EventManager<T extends string> {
    private listenersMap;
    constructor();
    /**
     * Listen to an event.
     * @param eventName The name of the event to listen to.
     * @param listener The callback function to be called when the event is emitted.
     * @returns void
     */
    on(eventName: T, listener: Listener): void;
    /**
     * Remove a listener from an event.
     * @param eventName The name of the event to listen to.
     * @param listener The callback function to be called when the event is emitted.
     * @returns void
     */
    off(eventName: T, listener?: Listener): void;
    /**
     * Emit an event.
     * @param eventName The name of the event to listen to.
     * @param payload The payload to be passed to the listener.
     * @returns true if the event has listeners, false otherwise.
     */
    emit(eventName: T, ...payload: any): boolean;
}
