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