1import { Disposable } from './disposable'; 2/** 3 * Represents a typed event. 4 */ 5export interface Event<T> { 6 /** 7 * 8 * @param listener The listener function will be call when the event happens. 9 * @param thisArgs The 'this' which will be used when calling the event listener. 10 * @param disposables An array to which a {{IDisposable}} will be added. The 11 * @return 12 */ 13 (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable; 14} 15export declare namespace Event { 16 const None: Event<any>; 17} 18export interface EmitterOptions { 19 onFirstListenerAdd?: Function; 20 onLastListenerRemove?: Function; 21} 22export declare class Emitter<T> { 23 private _options?; 24 private static _noop; 25 private _event; 26 private _callbacks; 27 constructor(_options?: EmitterOptions | undefined); 28 /** 29 * For the public to allow to subscribe 30 * to events from this Emitter 31 */ 32 get event(): Event<T>; 33 /** 34 * To be kept private to fire an event to 35 * subscribers 36 */ 37 fire(event: T): any; 38 dispose(): void; 39} 40