export type Listener = ((evt: EEvent) => void) & { fn?: Listener; }; export interface EventType { type: string; payload?: any; } export declare class EEvent { type: string; target: unknown; currentTarget: T; propagationStarted: boolean; payload?: any; constructor(eventType: EventType, currentTarget: T); stopImmediatePropagation(): void; } export declare class Emitter { __listeners: Map; addListener: (eventType: string | string[], listener: Listener) => this; removeListener: (eventType?: string | string[], listener?: Listener) => this; constructor(); on(eventType: string | string[], listener: Listener): this; once(eventType: string | string[], listener: Listener): this; off(eventType?: string | string[], listener?: Listener): this; emit(eventType: EventType): number; emit(eventType: string, payload?: any): number; listeners(eventType: string): Listener[]; listenerCount(eventType?: string): number; removeAllListeners(eventType?: string | string[]): this; } export declare function mixin(object: T): T & Emitter; export default Emitter;