var Q = {};

/**
 * @constructor
 */
function QDeferred () {};

QDeferred.prototype.reject = function (args) {};

QDeferred.prototype.resolve = function (args) {};

/**
 * @type {string}
 */
QDeferred.prototype.state;

/**
 * @type {string}
 */
QDeferred.prototype.reason;

/**
 * @returns {QDeferred}
 */
Q.defer = function () {};

/**
 * @constructor
 */
function QPromise () {};

QPromise.prototype.then = function (args) {};

QPromise.prototype.catch = function (args) {};

/**
 * @returns {QPromise}
 */
Q.promise = function() {};

/**
 * @returns {*}
 * @param {Array<QDeferred>} promises
 */
Q.allSettled = function(promises) {};

@@ -547,17 +547,24 @@
 eturns %7B
-*
+QPromise
 %7D%0A * @pa
@@ -575,24 +575,23 @@
 %7BArray%3CQ
-Deferred
+Promise
 %3E%7D promi
@@ -625,16 +625,239 @@
 tion
-(promise
+ (promises) %7B%7D;%0A%0A/**%0A * @returns %7BQPromise%7D%0A * @param %7BArray%3CQPromise%3E%7D promises%0A */%0AQ.all = function (promises) %7B%7D;%0A%0A/**%0A * @returns %7BQPromise%7D%0A * @param %7Bfunction(...?):?%7D fn%0A * @param %7B...*%7D args%0A */%0AQ.nfcall = function (fn, arg
 s) %7B

Fix signature in externs for Q.all & Q.allSettled