export declare type UnsubscribeCallback = { (): void; }; export declare type EmitterCallback = { (event: T): void; }; export interface EventEmitter { emit(event: T): void; queue(event: T): void; listen(callback: EmitterCallback): UnsubscribeCallback; } export declare class Emitter { private listeners; private isEmitting; private queuedEvents; emit(event: T): void; queue(event: T): void; listen(callback: EmitterCallback): UnsubscribeCallback; } export declare function flatMap(transform: (event: T) => Array, source: EventEmitter): EventEmitter;