import EventEmitter from './../event-emitter';
import { EventTarget } from './../event-dispatcher';
import EventListener from './../event-listener';
import AsynchronousEventDispatcher from './../event-dispatcher/asynchronous-event-dispatcher';
/**
 * An implementation of an asynchronous event emitter
 */
export default class AsynchronousEventEmitter implements EventEmitter {
    private dispatcher;
    constructor(dispatcher?: AsynchronousEventDispatcher);
    /**
     * {@inheritdoc}
     */
    emit<T>(name: EventTarget, payload?: T): Promise<T>;
    /**
     * {@inheritdoc}
     */
    on(name: EventTarget, listener: EventListener): void;
    /**
     * {@inheritdoc}
     */
    removeEventListener(name: EventTarget, listener: EventListener): void;
    /**
     * {@inheritdoc}
     */
    clearEventListeners(name?: EventTarget): void;
}
