import * as BluebirdPromise from "bluebird"; export interface IDefer { resolve: (value: TResult) => void; reject: (error: any) => void; promise: BluebirdPromise; } export declare function raceToResolution(promises: BluebirdPromise[], onErrorCallback?: (err: any) => void): BluebirdPromise; export declare function defer(): IDefer; export declare function delay(ms: number): Promise; export declare function wrapWithTimeout(promise: Promise, ms: number): Promise; export declare class AsyncTimeout { get promise(): Promise; get timedOut(): boolean; private _timedOut; private _timer; private _promise; private _op; private _resolve; private _reject; constructor(ms: number, op?: string); private _getTimeoutError; cancel(): void; } export type PromiseStatus = "PENDING" | "RESOLVED" | "REJECTED"; export declare class PromiseStatusTracker { private _status; private _promise; constructor(promise: Promise); static track(promise: Promise): PromiseStatusTracker; isFullfilled(): boolean; isResolved(): boolean; isRejected(): boolean; }