/**
*
*/
export type EventEmitterListener
= (...callbackArgs: P) => void;
/**
* 事件监听器选项
*/
export type EventEmitterOptions = {
/**
* 是否只监听一次
*/
once?: boolean;
};
/**
* 事件监听器
*/
export declare class EventEmitter> {
private listeners;
/**
* 移除事件监听器
* @param eventName - 事件名称
* @param listener - 事件监听器
* @returns
*/
off: (eventName: E, listener: EventEmitterListener) => void;
/**
* 监听事件
* @param eventName - 事件名称
* @param listener - 事件监听器
* @param options - 事件监听器选项
* @returns
*/
on: (eventName: E, listener: EventEmitterListener, options?: EventEmitterOptions) => () => void;
/**
* 一次性监听事件
* @param eventName - 事件名称
* @param listener - 事件监听器
*/
once: (eventName: E, listener: EventEmitterListener) => void;
/**
* 触发事件
* @param eventName - 事件名称
* @param args - 事件参数
*/
emit: (eventName: E, ...args: T[E]) => void;
/**
* 获取事件名称对应的所有监听器
* @param eventName - 事件名称
* @returns - 返回事件名称对应的所有监听器
*/
getListeners: (eventName: E) => EventEmitterListener[];
}