/**
* 基于 tsee 删减了不需要的功能
*/
///
export type Listener = (...args: any[]) => Promise | void;
export type DefaultEventMap = {
[event in string | symbol]: Listener;
};
export interface IEventEmitter {
emit(event: EventKey, ...args: Parameters): boolean;
on(event: EventKey, listener: EventMap[EventKey]): this;
once(event: EventKey, listener: EventMap[EventKey]): this;
addListener(event: EventKey, listener: EventMap[EventKey]): this;
removeListener(event: EventKey, listener: EventMap[EventKey]): this;
prependListener(event: EventKey, listener: EventMap[EventKey]): this;
prependOnceListener(event: EventKey, listener: EventMap[EventKey]): this;
off(event: EventKey, listener: EventMap[EventKey]): this;
removeAllListeners(event?: EventKey): this;
}
/** cast type of any event emitter to typed event emitter */
export declare function asTypedEventEmitter(x: X): IEventEmitter;
/** Implemented event emitter */
export declare class EventEmitter implements IEventEmitter {
private debug;
constructor();
events: {
[eventName in keyof EventMap]?: Function[];
};
emit: (event: EventKey, ...args: Parameters) => boolean;
on: (event: EventKey, listener: EventMap[EventKey]) => this;
once: (event: EventKey, listener: EventMap[EventKey]) => this;
addListener: (event: EventKey, listener: EventMap[EventKey]) => this;
removeListener: (event: EventKey, listener: EventMap[EventKey]) => this;
prependListener: (event: EventKey, listener: EventMap[EventKey]) => this;
prependOnceListener: (event: EventKey, listener: EventMap[EventKey]) => this;
off: (event: EventKey, listener: EventMap[EventKey]) => this;
removeAllListeners: (event?: EventKey | undefined) => this;
}