export declare class BaseEventObject {
    private _listeners;
    add(listener: Function): void;
    remove(listener: Function): void;
    listenersCount(): number;
    notify(...args: any[]): void;
}
export declare class EventObject<T> extends BaseEventObject {
    add(listener: (eventArg?: T) => any): void;
    remove(listener: (eventArg?: T) => any): void;
    notify(data?: T): void;
    fire(data?: T): void;
}
export declare class EventWithAutoSenderArg<TSender, TEventArg> extends BaseEventObject {
    private _sender;
    constructor(_sender: TSender);
    add(listener: (sender?: TSender, eventArg?: TEventArg) => any): void;
    remove(listener: (sender?: TSender, eventArg?: TEventArg) => any): void;
    notify(data?: TEventArg): void;
    fire(data?: TEventArg): void;
}
export declare class EventWithSenderArg<TSender, TEventArg> extends BaseEventObject {
    private _sender;
    constructor(_sender?: TSender);
    add(listener: (sender?: TSender, eventArg?: TEventArg) => any): void;
    remove(listener: (sender?: TSender, eventArg?: TEventArg) => any): void;
    notify(sender: TSender, data?: TEventArg): void;
}
