import type LayoutManager from '../LayoutManager';
import EventEmitter from './EventEmitter';
/**
 * An EventEmitter singleton that propagates events
 * across multiple windows. This is a little bit trickier since
 * windows are allowed to open childWindows in their own right
 *
 * This means that we deal with a tree of windows. Hence the rules for event propagation are:
 *
 * - Propagate events from this layout to both parents and children
 * - Propagate events from parent to this and children
 * - Propagate events from children to the other children (but not the emitting one) and the parent
 */
declare class EventHub extends EventEmitter {
    private _layoutManager;
    private _dontPropagateToParent;
    private _childEventSource;
    private _boundOnEventFromChild;
    constructor(layoutManager: LayoutManager);
    /**
     * Called on every event emitted on this eventHub, regardles of origin.
     */
    private _onEventFromThis;
    /**
     * Called by the parent layout.
     *
     * @param args Event name + arguments
     */
    private _$onEventFromParent;
    /**
     * Callback for child events raised on the window
     *
     * @param event
     */
    private _onEventFromChild;
    /**
     * Propagates the event to the parent by emitting
     * it on the parent's DOM window
     *
     * @param args Event name + arguments
     */
    private _propagateToParent;
    /**
     * Propagate events to children
     *
     * @param args Event name + arguments
     */
    private _propagateToChildren;
    /**
     * Destroys the EventHub
     */
    destroy(): void;
}
export default EventHub;
//# sourceMappingURL=EventHub.d.ts.map