import { EventBase } from './EventBase';
/**
 * Base export class for dispatching events
*
* @export class away.events.EventDispatcher
*
*/
export declare class EventDispatcher {
    private _listenerObjects;
    private _t;
    constructor(target?: any);
    /**
     * Add an event listener
     * @method addEventListener
     * @param {String} type of event to add a listener for
     * @param {Function} listener function
     */
    addEventListener(type: string, listener: (event: EventBase) => void): void;
    /**
     * Remove an event listener
     * @method removeEventListener
     * @param {String} type of event to remove a listener for
     * @param {Function} listener function
     */
    removeEventListener(type: string, listener: (event: EventBase) => void): void;
    /**
     * Dispatch an event
     * @method dispatchEvent
     * @param {Event} event to dispatch
     */
    dispatchEvent(event: EventBase, target?: any): void;
    /**
     * check if an object has an event listener assigned to it
     * @method hasListener
     * @param {String} type of event to remove a listener for
     * @param {Function} listener function
     */
    hasEventListener(type: string, listener?: (event: EventBase) => void): boolean;
    protected removeAllEventListeners(): void;
}
export declare class ListenerObject {
    private _index;
    private _listeners;
    numListeners: number;
    addEventListener(listener: (event: EventBase) => void): void;
    removeEventListener(listener: (event: EventBase) => void): void;
    dispatchEvent(event: EventBase): void;
    /**
     * get Event Listener Index in array. Returns -1 if no listener is added
     * @method getEventListenerIndex
     * @param {Function} listener function
     */
    getEventListenerIndex(listener: (event: EventBase) => void): number;
}
//# sourceMappingURL=EventDispatcher.d.ts.map