import { EventBase } from './EventBase';
/**
 * Base interface for dispatching events
 *
 * @interface away.events.IEventDispatcher
 *
 */
export interface IEventDispatcher {
    /**
     * 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): any;
    /**
     * 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): any;
    /**
     * Dispatch an event
     * @method dispatchEvent
     * @param {Event} event to dispatch
     */
    dispatchEvent(event: EventBase, target?: any): any;
    /**
     * 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;
}
//# sourceMappingURL=IEventDispatcher.d.ts.map