/**
 * Copyright Joyent, Inc. and other Node contributors.
 * Modifications copyright (c) Microsoft Corporation.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so, subject to the
 * following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
import type { EventEmitter as EventEmitterType } from 'events';
import type { Platform } from '@isomorphic/platform';
type EventType = string | symbol;
type Listener = (...args: any[]) => any;
export declare class EventEmitter implements EventEmitterType {
    private _events;
    private _eventsCount;
    private _maxListeners;
    readonly _pendingHandlers: Map<EventType, Set<Promise<void>>>;
    private _rejectionHandler;
    readonly _platform: Platform;
    constructor(platform: Platform);
    setMaxListeners(n: number): this;
    getMaxListeners(): number;
    emit(type: EventType, ...args: any[]): boolean;
    private _callHandler;
    addListener(type: EventType, listener: Listener): this;
    on(type: EventType, listener: Listener): this;
    private _addListener;
    prependListener(type: EventType, listener: Listener): this;
    once(type: EventType, listener: Listener): this;
    prependOnceListener(type: EventType, listener: Listener): this;
    removeListener(type: EventType, listener: Listener): this;
    off(type: EventType, listener: Listener): this;
    removeAllListeners(type?: EventType): this;
    removeAllListeners(type: EventType | undefined, options: {
        behavior?: 'wait' | 'ignoreErrors' | 'default';
    }): Promise<void>;
    private _removeAllListeners;
    listeners(type: EventType): Listener[];
    rawListeners(type: EventType): Listener[];
    listenerCount(type: EventType): number;
    eventNames(): Array<string | symbol>;
    private _waitFor;
    private _listeners;
}
export {};
//# sourceMappingURL=eventEmitter.d.ts.map