import { IEventArgs, IEventArgs1 } from './IEventArgs'; import { IEventHandler, IEventHandler1 } from './IEventHandler'; export interface IEvent { OnHandlerAttached: () => void; OnHandlerAttachedContext: any; OnHandlerDettached: () => void; OnHandlerDettachedContext: any; bind(handler: IEventHandler): void; bindFor(handler: IEventHandler, triggerCount: number): void; unbind(handler: IEventHandler): void; hasBindings(handler: IEventHandler): boolean; trigger(args: IEventArgs): void; fire(sender: any, data?: any): void; } export interface IEvent1 extends IEvent { bind(handler: IEventHandler1): void; bindFor(handler: IEventHandler1, triggerCount: number): void; unbind(handler: IEventHandler1): void; hasBindings(handler: IEventHandler1): boolean; trigger(args: IEventArgs1): void; fire(sender: any, data: T): void; }