/** Promise class shim with basic functionality. @ignore internal use. */
export interface PromisyClass {
    new <Result>(handler: (resolve: (result?: Result) => any, reject: (err?: any) => any) => any): PromiseLike<Result>;
    resolve<Result>(result: Result | PromiseLike<Result>): PromiseLike<Result>;
    reject(err: any): PromiseLike<any>;
}
/** Call func and return a promise for its result.
  * Optionally call given resolve or reject handler when the promise settles. */
export declare function tryFinally<Result>(func: () => Result | PromiseLike<Result>, onFinish: () => void, Promise: PromisyClass, resolve?: (result: Result) => void, reject?: (err: any) => void): PromiseLike<Result>;
/** Task wraps a promise, delaying it until some resource gets less busy. */
export declare class Task<Result> {
    private func;
    private Promise;
    stamp: number;
    constructor(func: () => Result | PromiseLike<Result>, Promise: PromisyClass, stamp: number);
    /** Wrap task result in a new promise so it can be resolved later. */
    delay(): PromiseLike<Result>;
    /** Start the task and call onFinish when done. */
    resume(onFinish: () => void): PromiseLike<Result>;
    private promise;
    private resolve;
    private reject;
}
