export interface IException {
    message: string;
}
export declare class Task<TT> {
    private func;
    promise: Promise<TT>;
    private resolveFunc;
    constructor(func: (cback?: (val?: TT) => void) => void);
    then: (onFulfilled: (value?: TT) => TT | PromiseLike<TT>) => Promise<TT>;
    start: () => void;
}
export interface IDebouncedTask<TT> extends Task<TT> {
    trigger: () => void;
    call: () => void;
}
export declare class RecurringTask {
    private callback;
    private timeout;
    private maxLockTime;
    private _isRunning;
    private refreshLock;
    private timedCall;
    constructor(callback: () => Promise<void>, timeout: number, maxLockTime?: number);
    get isRunning(): boolean;
    setTimeOut: (time: number) => void;
    start: () => void;
    stop: () => void;
}
export declare function runAfterWait(waitTimeMilliSeconds: number): IDebouncedTask<void>;
export declare function debounced(): IDebouncedTask<void>;
export declare function delay(msec: number): Promise<void>;
export declare function whenReady(): Promise<void>;
export declare function whenTrue(trueFunc: () => boolean, maxLockTime?: number): Promise<void>;
export declare function WhenAll<tRet>(list: Array<Promise<tRet>>, progressCB?: (numFinished: number, total: number) => void): Promise<Array<tRet>>;
