import { IClearable } from "@drozdik.m/common-interfaces/IClearable";
import { IClonable } from "@drozdik.m/common-interfaces/IClonable";
import { IDisposable } from "@drozdik.m/common-interfaces/IDisposable";
import { ICountable } from "@drozdik.m/common-interfaces/ICountable";
import { IEvent } from "@drozdik.m/common-interfaces/IEvent";
export declare class Event<C, A> implements IClearable, IClonable<Event<C, A>>, IDisposable, ICountable {
    private callbacks;
    constructor();
    /**
     * Adds function to be called on event trigger
     * @param item Function to add
     */
    Add(item: IEvent<C, A>): void;
    /**
     * Removes functions to be triggered (only first occurence)
     * @param item  Function to remove
     */
    Remove(item: IEvent<C, A>): void;
    /**
     * Calls all added functions
     * @param caller Caller object
     * @param args Arguments
     */
    Invoke(caller: C, args: A): void;
    Clone(): Event<C, A>;
    Count(): number;
    IsEmpty(): boolean;
    Dispose(): void;
    Clear(): void;
}
