export type Listener = (payload: T) => void; export interface TypedEventEmitter { on(event: EventType, listener: Listener>): this; addListener(event: EventType, listener: Listener>): this; removeListener(event: EventType, listener: Listener>): this; removeAllListeners(event?: EmitterEventType): this; emit(event: EventType, payload: Extract): boolean; }