export type EventListener < T > = ( data : T ) => void ; export interface Triggerable < T > { dispatch ( data ) : this ; dispose ( ) : void ; } export interface Subscribable < T > { subscribe ( listener ) : this ; unsubscribe ( listener ) : this ; once ( listener ) : this ; listener ( ) : MethodDecorator ; } export interface Event < T > extends Subscribable < T > , Triggerable < T > { }