import { SyncEvent } from './sync-event'; /** * Simple synchronous event queue that needs to be drained manually. */ declare class EventQueue { /** * SyncEvent triggered after an event is added outside of a flush operation. * @param queue The event queue itself */ evtFilled: SyncEvent; /** * SyncEvent triggered after the queue is flushed empty * @param queue The event queue itself */ evtDrained: SyncEvent; /** * The module-global event queue */ private static _instance; /** * The module-global event queue */ static global(): EventQueue; /** * Testing purposes */ static resetGlobal(): void; /** * Queued elements */ private _queue; /** * True while flush() or flushOnce() is running */ private _flushing; /** * Returns true iff the queue is empty */ empty(): boolean; /** * Add an element to the queue. The handler is called when one of the flush * methods is called. */ add(handler: () => void): void; /** * Calls all handlers currently in the queue. Does not call any handlers added * as a result of the flush */ flushOnce(): void; /** * Flushes the QueuedEvents, calling all events currently in the queue and those * put into the queue as a result of the flush. * @param maxRounds Optional, default 10. Number of iterations after which to throw an error because * the queue keeps filling up. Set to null to disable this. */ flush(maxRounds?: number | null): void; } export default EventQueue;