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; }