import { EventEmitter } from 'eventemitter3';
import { CoreSet } from '../collections/CoreSet';
export interface BatchedEventEmitter {
    emitBatchedEvents(resolve?: any, reject?: any): void;
}
export declare class EventBatcher extends EventEmitter {
    private batching;
    emitters: CoreSet<BatchedEventEmitter>;
    static ALL_EVENTS_DISPATCHED: string;
    private emitting;
    hasBatchedEvents(filterFn?: (emitter: BatchedEventEmitter) => boolean): boolean;
    getPendingEmitters(filterFn?: (emitter: BatchedEventEmitter) => boolean): CoreSet<BatchedEventEmitter>;
    promiseDone(): Promise<unknown>;
    dispatchBatchedEventsOnceReady(): void;
    dispatchBatchedEvents(): void;
    dispatchSomeEvents(filterEmitters: (emitter: BatchedEventEmitter) => boolean): boolean;
    get isBatching(): boolean;
    register(emitter: BatchedEventEmitter): void;
}
export declare const eventBatcher: EventBatcher;
