export declare class EventHandler<T> {
    private onTrigger;
    constructor();
    trigger(data?: T): void;
    triggerAsync(data?: T): Promise<void>;
    addListener(callback: (data?: T) => void): void;
    addAsyncListener(callback: (data?: T) => Promise<void>): void;
    onTriggeredAsync(): Promise<T>;
    onOccur(): Promise<T>;
}
export declare class DebouncedEventHandler<T> extends EventHandler<T> {
    private resetTimeMilliSeconds;
    private lastTime;
    constructor(resetTimeMilliSeconds?: number);
    triggerAsync(data?: T): Promise<void>;
    trigger(data?: T): void;
}
export declare class AfterStableEventHandler<T> extends EventHandler<T> {
    private waitTimeMilliSeconds;
    constructor(waitTimeMilliSeconds?: number);
    private timer;
    private lastData;
    throttle(): void;
    triggerAsync(data?: T): Promise<void>;
    trigger(data?: T): void;
}
export declare class OneTimeEventHandler<T> extends EventHandler<T> {
    hasTriggered: boolean;
    private triggerData;
    constructor();
    triggerAsync(data?: T): Promise<void>;
    trigger(data?: T): void;
    addAsyncListener(callback: (data?: T) => Promise<void>): void;
    addListener(callback: (data?: T) => any): void;
}
