import { Disposable } from './disposable'; /** * Represents a typed event. */ export interface Event { /** * * @param listener The listener function will be called when the event happens. * @param thisArgs The 'this' which will be used when calling the event listener. * @param disposables An array to which a {{IDisposable}} will be added. * @return */ (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable; } export declare namespace Event { const None: Event; } export interface EmitterOptions { onFirstListenerAdd?: Function; onLastListenerRemove?: Function; } export declare class Emitter { private _options?; private static _noop; private _event; private _callbacks; constructor(_options?: EmitterOptions | undefined); /** * For the public to allow to subscribe * to events from this Emitter */ get event(): Event; /** * To be kept private to fire an event to * subscribers */ fire(event: T): any; dispose(): void; }