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