interface EventEmitterOptions { once?: boolean; } declare type EventEmitterListenerItem = EventEmitterOptions & { callback: (...args: unknown[]) => void; }; declare type EventEmitterBaseEventMap = Record; export declare type Off = () => void; /** * A EventEmitter work like node/event */ export declare class EventEmitter { #private; get listeners(): Record; set listeners(listeners: Record); constructor(data?: Partial>); /** * Send Event to all listener * @param eventName Event Name * @param args arguments */ emit(eventName: K, ...args: Parameters): this; /** * Add event listener * @param eventName Event Name * @param callback Event Callback */ on(eventName: K, callback: E[K], options?: EventEmitterOptions): Off; /** * Remove event listener * @param eventName Event Name * @param callback Event Callback */ off(eventName: K, callback: E[K]): this | undefined; /** * Like on but just run once * @param eventName Event Name * @param callback Event Callback */ once(eventName: K, callback: E[K]): Off; } export {};