interface EventEmittor { on(event: T[number], listener: (...args: any[]) => void): this; off(event: T[number], listener: (...args: any[]) => void): this; emit(event: T[number], ...args: any[]): Promise; } declare class EventManager implements EventEmittor { private listeners; on(event: T[number], listener: (...args: any[]) => void): this; off(event: T[number], listener: (...args: any[]) => void): this; emit(event: T[number], ...args: any[]): Promise; } declare class EventEmittorBase implements EventEmittor { protected event_manager: EventManager; on(event: T[number], listener: (...args: any[]) => void): this; off(event: T[number], listener: (...args: any[]) => void): this; emit(event: T[number], ...args: any[]): Promise; } export { type EventEmittor, EventEmittorBase, EventManager };