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