export interface ReadonlyAsyncEmitter { on(type: K | '*', listener: (event: EventMap[K]) => void | Promise, order?: number): this; once(type: K | '*', listener: (event: EventMap[K]) => void | Promise, order?: number): this; off(type: K | '*', listener: (event: EventMap[K]) => void | Promise): this; } export interface AsyncEmitter extends ReadonlyAsyncEmitter { emit(type: K, event: EventMap[K]): Promise; }