import { Event, IClass, IEvent, IEventDispatcher } from "@robotlegsjs/core";
import { IEventEmitterMap } from "@robotlegsjs/eventemitter3";
import { DisplayObject, utils } from "pixi.js";
import { IMediator } from "../api/IMediator";
/**
 * Classic Robotlegs mediator implementation
 *
 * <p>Override initialize and destroy to hook into the mediator lifecycle.</p>
 */
export declare abstract class Mediator<T extends DisplayObject> implements IMediator {
    protected eventMap: IEventEmitterMap;
    protected eventDispatcher: IEventDispatcher;
    protected _viewComponent: T;
    set view(view: T);
    get view(): T;
    /**
     * @inheritDoc
     */
    abstract initialize(): void;
    /**
     * @inheritDoc
     */
    abstract destroy(): void;
    /**
     * Runs after the mediator has been destroyed.
     * Cleans up listeners mapped through the local EventMap.
     */
    postDestroy(): void;
    protected addViewListener(eventString: string, listener: utils.EventEmitter.ListenerFn, thisObject?: any): void;
    protected addContextListener(eventString: string, listener: Function, thisObject?: any, eventClass?: IClass<IEvent>, useCapture?: boolean, priority?: number): void;
    protected addDomListener(eventTarget: EventTarget, eventString: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
    protected removeViewListener(eventString: string, listener: utils.EventEmitter.ListenerFn, thisObject?: any): void;
    protected removeContextListener(eventString: string, listener: Function, thisObject?: any, eventClass?: IClass<IEvent>, useCapture?: boolean): void;
    protected removeDomListener(eventTarget: EventTarget, eventString: string, listener: EventListenerOrEventListenerObject): void;
    protected dispatch(event: Event): void;
}
