export type TokenType = object | symbol ; export type Listener < T > = ( ev : T ) => any ; export type HookTap < I , O > = ( i : I ) => O ; export interface IBaklavaEvent < T > { addListener ( token , listener ) : void ; removeListener ( token ) : void ; emit ( data ) : void ; } export interface IPreventableBaklavaEvent < T > extends IBaklavaEvent < T > { emit ( data ) : boolean ; } export interface IHook < I , O = I > { tap ( token , tapFn ) : void ; untap ( token ) : void ; execute ( data ) : O ; }