/** * Represents the completion of an asynchronous operation */ interface ThenPromise extends Promise { /** * Attaches callbacks for the resolution and/or rejection of the ThenPromise. * @param onfulfilled The callback to execute when the ThenPromise is resolved. * @param onrejected The callback to execute when the ThenPromise is rejected. * @returns A ThenPromise for the completion of which ever callback is executed. */ then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): ThenPromise; /** * Attaches a callback for only the rejection of the ThenPromise. * @param onrejected The callback to execute when the ThenPromise is rejected. * @returns A ThenPromise for the completion of the callback. */ catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): ThenPromise; // Extensions specific to then/promise /** * Attaches callbacks for the resolution and/or rejection of the ThenPromise, without returning a new promise. * @param onfulfilled The callback to execute when the ThenPromise is resolved. * @param onrejected The callback to execute when the ThenPromise is rejected. */ done(onfulfilled?: ((value: T) => any) | undefined | null, onrejected?: ((reason: any) => any) | undefined | null): void; /** * Calls a node.js style callback. If none is provided, the promise is returned. */ nodeify(callback: void | null): ThenPromise; nodeify(callback: (err: Error, value: T) => void): void; } interface ThenPromiseConstructor { /** * A reference to the prototype. */ readonly prototype: ThenPromise; /** * Creates a new ThenPromise. * @param executor A callback used to initialize the promise. This callback is passed two arguments: * a resolve callback used resolve the promise with a value or the result of another promise, * and a reject callback used to reject the promise with a provided reason or error. */ new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => any): ThenPromise; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): ThenPromise<[T1, T2, T3, T4, T5, T6]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): ThenPromise<[T1, T2, T3, T4, T5]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): ThenPromise<[T1, T2, T3, T4]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): ThenPromise<[T1, T2, T3]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: [T1 | PromiseLike, T2 | PromiseLike]): ThenPromise<[T1, T2]>; /** * Creates a ThenPromise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any ThenPromise is rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ all(values: (T | PromiseLike)[]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: [T1 | PromiseLike, T2 | PromiseLike]): ThenPromise; /** * Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new ThenPromise. */ race(values: (T | PromiseLike)[]): ThenPromise; /** * Creates a new rejected promise for the provided reason. * @param reason The reason the promise was rejected. * @returns A new rejected ThenPromise. */ reject(reason: any): ThenPromise; /** * Creates a new rejected promise for the provided reason. * @param reason The reason the promise was rejected. * @returns A new rejected ThenPromise. */ reject(reason: any): ThenPromise; /** * Creates a new resolved promise for the provided value. * @param value A promise. * @returns A promise whose internal state matches the provided promise. */ resolve(value: T | PromiseLike): ThenPromise; /** * Creates a new resolved promise . * @returns A resolved promise. */ resolve(): ThenPromise; // Extensions specific to then/promise denodeify: (fn: Function) => (...args: any[]) => ThenPromise; nodeify: (fn: Function) => Function; } declare var ThenPromise: ThenPromiseConstructor; export = ThenPromise;