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