import { DebounceMode } from "./debounce";
export declare type TeamAppsEventListener<EO> = (eventObject?: EO, emitter?: any) => void;
/**
 * @param EO the event object type
 */
export declare class TeamAppsEvent<EO> {
    private eventSource;
    private listeners;
    private previousEventObject;
    fire: (eventObject: EO) => void;
    constructor(eventSource: any, options?: {
        throttlingMode: "throttle" | "debounce";
        delay: number;
        debounceMode?: DebounceMode;
    });
    addListener(fn: TeamAppsEventListener<EO>, allowDuplicates?: boolean): void;
    removeListener(fn: TeamAppsEventListener<EO>): void;
    private _fire;
    fireIfChanged(eventObject: EO): void;
    getListeners(): TeamAppsEventListener<EO>[];
}
