diff --git a/ace/ace.d.ts.tscparams b/ace/ace.d.ts.tscparams
deleted file mode 100644
index d3f5a12fa..000000000
--- a/ace/ace.d.ts.tscparams
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ace/tests/ace-editor_text_edit-tests.ts.tscparams b/ace/tests/ace-editor_text_edit-tests.ts.tscparams
deleted file mode 100644
index d3f5a12fa..000000000
--- a/ace/tests/ace-editor_text_edit-tests.ts.tscparams
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ace/tests/ace-range-tests.ts.tscparams b/ace/tests/ace-range-tests.ts.tscparams
deleted file mode 100644
index d3f5a12fa..000000000
--- a/ace/tests/ace-range-tests.ts.tscparams
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ace/tests/ace-search-tests.ts.tscparams b/ace/tests/ace-search-tests.ts.tscparams
deleted file mode 100644
index d3f5a12fa..000000000
--- a/ace/tests/ace-search-tests.ts.tscparams
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/angular-dynamic-locale/angular-dynamic-locale.d.ts b/angular-dynamic-locale/angular-dynamic-locale.d.ts
index a30df1d7e..e404e9532 100644
--- a/angular-dynamic-locale/angular-dynamic-locale.d.ts
+++ b/angular-dynamic-locale/angular-dynamic-locale.d.ts
@@ -5,6 +5,11 @@
///
+declare module "angular-dynamic-locale" {
+ import ng = angular.dynamicLocale;
+ export = ng;
+}
+
declare module angular.dynamicLocale {
interface tmhDynamicLocaleService {
diff --git a/angular-formly/angular-formly.d.ts b/angular-formly/angular-formly.d.ts
index 2bf75af7d..fce793e7e 100644
--- a/angular-formly/angular-formly.d.ts
+++ b/angular-formly/angular-formly.d.ts
@@ -70,6 +70,11 @@ declare module AngularFormly {
postWrapper?: ITemplateManipulator[];
}
+ interface ISelectOption {
+ name: string;
+ value?: string;
+ group?: string;
+ }
/**
* see http://docs.angular-formly.com/docs/ngmodelattrstemplatemanipulator
@@ -104,6 +109,12 @@ declare module AngularFormly {
description?: string;
[key: string]: any;
+ // types for select/radio fields
+ options?: Array;
+ groupProp?: string; // default: group
+ valueProp?: string; // default: value
+ labelProp?: string; // default: name
+
}
diff --git a/angular-loading-bar/angular-loading-bar-tests.ts b/angular-loading-bar/angular-loading-bar-tests.ts
index b7ca2894e..b8bde9e93 100644
--- a/angular-loading-bar/angular-loading-bar-tests.ts
+++ b/angular-loading-bar/angular-loading-bar-tests.ts
@@ -7,9 +7,17 @@ class TestController {
constructor($http: ng.IHttpService) {
$http.get("http://xyz.com", { ignoreLoadingBar: true })
-
+
}
}
app.controller('TestController', TestController);
+
+var barConfig: angular.loadingBar.ILoadingBarProvider[] = [];
+barConfig.push({
+ includeSpinner: true,
+ includeBar: true,
+ spinnerTemplate: 'template',
+ latencyThreshold: 100
+});
diff --git a/angular-loading-bar/angular-loading-bar.d.ts b/angular-loading-bar/angular-loading-bar.d.ts
index b1a8cd55d..acea6f048 100644
--- a/angular-loading-bar/angular-loading-bar.d.ts
+++ b/angular-loading-bar/angular-loading-bar.d.ts
@@ -14,5 +14,30 @@ declare module angular {
*/
ignoreLoadingBar?: boolean;
}
+}
-}
\ No newline at end of file
+declare module angular.loadingBar {
+
+ interface ILoadingBarProvider{
+ /**
+ * Turn the spinner on or off
+ */
+ includeSpinner?: boolean;
+
+ /**
+ * Turn the loading bar on or off
+ */
+ includeBar?: boolean;
+
+ /**
+ * HTML template
+ */
+ spinnerTemplate?: string;
+
+ /**
+ * Latency Threshold
+ */
+ latencyThreshold?: number;
+ }
+
+}
diff --git a/angular-protractor/angular-protractor-tests.ts b/angular-protractor/angular-protractor-tests.ts
index 45a5d7edc..0f98aead1 100644
--- a/angular-protractor/angular-protractor-tests.ts
+++ b/angular-protractor/angular-protractor-tests.ts
@@ -196,6 +196,27 @@ function TestWebDriverUntilModule() {
conditionWebElements = protractor.until.elementsLocated(by.className('class'));
}
+function TestWebDriverExpectedConditionsModule() {
+ var conditionB: protractor.until.Condition;
+ var el: protractor.ElementFinder = element(by.id('id'));
+
+ conditionB = protractor.ExpectedConditions.alertIsPresent();
+ conditionB = protractor.ExpectedConditions.elementToBeClickable(el);
+ conditionB = protractor.ExpectedConditions.textToBePresentInElement(el, 'text');
+ conditionB = protractor.ExpectedConditions.textToBePresentInElementValue(el, 'text');
+ conditionB = protractor.ExpectedConditions.titleContains('text');
+ conditionB = protractor.ExpectedConditions.titleIs('text');
+ conditionB = protractor.ExpectedConditions.presenceOf(el);
+ conditionB = protractor.ExpectedConditions.stalenessOf(el);
+ conditionB = protractor.ExpectedConditions.visibilityOf(el);
+ conditionB = protractor.ExpectedConditions.invisibilityOf(el);
+ conditionB = protractor.ExpectedConditions.elementToBeSelected(el);
+
+ conditionB = protractor.ExpectedConditions.not(protractor.ExpectedConditions.alertIsPresent());
+ conditionB = protractor.ExpectedConditions.and(protractor.ExpectedConditions.alertIsPresent(), protractor.ExpectedConditions.elementToBeClickable(el));
+ conditionB = protractor.ExpectedConditions.or(protractor.ExpectedConditions.alertIsPresent(), protractor.ExpectedConditions.elementToBeClickable(el));
+}
+
function TestProtractor() {
var ptor: protractor.Protractor;
var driver: webdriver.WebDriver = new webdriver.Builder().
diff --git a/angular-protractor/angular-protractor.d.ts b/angular-protractor/angular-protractor.d.ts
index ff8324238..dc969927e 100644
--- a/angular-protractor/angular-protractor.d.ts
+++ b/angular-protractor/angular-protractor.d.ts
@@ -501,6 +501,145 @@ declare module protractor {
function titleMatches(regex: RegExp): webdriver.until.Condition;
}
+ module ExpectedConditions {
+ /**
+ * Negates the result of a promise.
+ *
+ * @param {webdriver.until.Condition} expectedCondition
+ * @return {!webdriver.until.Condition} An expected condition that returns the negated value.
+ */
+ function not(expectedCondition: webdriver.until.Condition): webdriver.until.Condition;
+
+ /**
+ * Chain a number of expected conditions using logical_and, short circuiting at the
+ * first expected condition that evaluates to false.
+ *
+ * @param {...webdriver.until.Condition[]} fns An array of expected conditions to 'and' together.
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise which evaluates
+ * to the result of the logical and.
+ */
+ function and(...fns: webdriver.until.Condition[]): webdriver.until.Condition;
+
+ /**
+ * Chain a number of expected conditions using logical_or, short circuiting at the
+ * first expected condition that evaluates to true.
+ *
+ * @param {...webdriver.until.Condition[]} fns An array of expected conditions to 'or' together.
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise which
+ * evaluates to the result of the logical or.
+ */
+ function or(...fns: webdriver.until.Condition[]): webdriver.until.Condition;
+
+ /**
+ * Expect an alert to be present.
+ *
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether an alert is present.
+ */
+ function alertIsPresent(): webdriver.until.Condition;
+
+ /**
+ * An Expectation for checking an element is visible and enabled such that you can click it.
+ *
+ * @param {ElementFinder} element The element to check
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the element is clickable.
+ */
+ function elementToBeClickable(element: ElementFinder): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking if the given text is present in the element.
+ * Returns false if the elementFinder does not find an element.
+ *
+ * @param {ElementFinder} element The element to check
+ * @param {string} text The text to verify against
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the text is present in the element.
+ */
+ function textToBePresentInElement(element: ElementFinder, text: string): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking if the given text is present in the element’s value.
+ * Returns false if the elementFinder does not find an element.
+ *
+ * @param {ElementFinder} element The element to check
+ * @param {string} text The text to verify against
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the text is present in the element's value.
+ */
+ function textToBePresentInElementValue(
+ element: ElementFinder, text: string
+ ): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking that the title contains a case-sensitive substring.
+ *
+ * @param {string} title The fragment of title expected
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the title contains the string.
+ */
+ function titleContains(title: string): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking the title of a page.
+ *
+ * @param {string} title The expected title, which must be an exact match.
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the title equals the string.
+ */
+ function titleIs(title: string): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking that an element is present on the DOM of a page. This does not necessarily
+ * mean that the element is visible. This is the opposite of 'stalenessOf'.
+ *
+ * @param {ElementFinder} elementFinder The element to check
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise
+ * representing whether the element is present.
+ */
+ function presenceOf(element: ElementFinder): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking that an element is not attached to the DOM of a page.
+ * This is the opposite of 'presenceOf'.
+ *
+ * @param {ElementFinder} elementFinder The element to check
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the element is stale.
+ */
+ function stalenessOf(element: ElementFinder): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking that an element is present on the DOM of a page and visible.
+ * Visibility means that the element is not only displayed but also has a height and width that is
+ * greater than 0. This is the opposite of 'invisibilityOf'.
+ *
+ * @param {ElementFinder} elementFinder The element to check
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the element is visible.
+ */
+ function visibilityOf(element: ElementFinder): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking that an element is present on the DOM of a page. This does not necessarily
+ * mean that the element is visible. This is the opposite of 'stalenessOf'.
+ *
+ * @param {ElementFinder} elementFinder The element to check
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the element is invisible.
+ */
+ function invisibilityOf(element: ElementFinder): webdriver.until.Condition;
+
+ /**
+ * An expectation for checking the selection is selected.
+ *
+ * @param {ElementFinder} elementFinder The element to check
+ * @return {!webdriver.until.Condition} An expected condition that returns a promise representing
+ * whether the element is selected.
+ */
+ function elementToBeSelected(element: ElementFinder): webdriver.until.Condition;
+ }
+
//endregion
/**
diff --git a/angular-translate/angular-translate.d.ts b/angular-translate/angular-translate.d.ts
index ee855af3d..8bef360ee 100644
--- a/angular-translate/angular-translate.d.ts
+++ b/angular-translate/angular-translate.d.ts
@@ -6,8 +6,8 @@
///
declare module "angular-translate" {
- var _: string;
- export = _;
+ import ngt = angular.translate;
+ export = ngt;
}
declare module angular.translate {
diff --git a/angular-ui-router/angular-ui-router-tests.ts b/angular-ui-router/angular-ui-router-tests.ts
index 3211faee5..41661d60d 100644
--- a/angular-ui-router/angular-ui-router-tests.ts
+++ b/angular-ui-router/angular-ui-router-tests.ts
@@ -230,7 +230,7 @@ module UrlRouterProviderTests {
// this allows you to configure custom behavior in between
// location changes and route synchronization:
$urlRouterProvider.deferIntercept();
- }).run(($rootScope: ng.IRootScopeService, $urlRouter: ng.ui.IUrlRouterService, UserService: ITestUserService) => {
+ }).run(($rootScope: ng.IRootScopeService, $urlRouter: ng.ui.IUrlRouterService, UserService: ITestUserService, $urlMatcher: ng.ui.IUrlMatcher) => {
$rootScope.$on('$locationChangeSuccess', e => {
// UserService is an example service for managing user state
if (UserService.isLoggedIn()) return;
@@ -245,6 +245,18 @@ module UrlRouterProviderTests {
});
// Configures $urlRouter's listener *after* your custom listener
- $urlRouter.listen();
+ var listen: Function = $urlRouter.listen();
+
+ var href: string;
+ href = $urlRouter.href($urlMatcher);
+ href = $urlRouter.href($urlMatcher, {});
+ href = $urlRouter.href($urlMatcher, {}, {});
+
+ $urlRouter.update();
+ $urlRouter.update(false);
+
+ $urlRouter.push($urlMatcher);
+ $urlRouter.push($urlMatcher, {});
+ $urlRouter.push($urlMatcher, {}, {});
});
}
diff --git a/angular-ui-router/angular-ui-router.d.ts b/angular-ui-router/angular-ui-router.d.ts
index 257446f69..a22b7d0da 100644
--- a/angular-ui-router/angular-ui-router.d.ts
+++ b/angular-ui-router/angular-ui-router.d.ts
@@ -300,7 +300,10 @@ declare module angular.ui {
*
*/
sync(): void;
- listen(): void;
+ listen(): Function;
+ href(urlMatcher: IUrlMatcher, params?: IStateParamsService, options?: IHrefOptions): string;
+ update(read?: boolean): void;
+ push(urlMatcher: IUrlMatcher, params?: IStateParamsService, options?: IHrefOptions): void;
}
interface IUiViewScrollProvider {
diff --git a/angularjs/angular-resource.d.ts b/angularjs/angular-resource.d.ts
index 14e8d46fb..1e82f3154 100644
--- a/angularjs/angular-resource.d.ts
+++ b/angularjs/angular-resource.d.ts
@@ -5,6 +5,10 @@
///
+declare module 'angular-resource' {
+ var _: string;
+ export = _;
+}
///////////////////////////////////////////////////////////////////////////////
// ngResource module (angular-resource.js)
diff --git a/angularjs/angular-route.d.ts b/angularjs/angular-route.d.ts
index 5f426d51c..eafdf714c 100644
--- a/angularjs/angular-route.d.ts
+++ b/angularjs/angular-route.d.ts
@@ -128,6 +128,12 @@ declare module angular.route {
}
interface IRouteProvider extends IServiceProvider {
+ /**
+ * Match routes without being case sensitive
+ *
+ * This option defaults to false. If the option is set to true, then the particular route can be matched without being case sensitive
+ */
+ caseInsensitiveMatch?: boolean;
/**
* Sets route definition that will be used on route change when no other route definition is matched.
*
diff --git a/angularjs/angular.d.ts b/angularjs/angular.d.ts
index a489141d5..97477e9a8 100644
--- a/angularjs/angular.d.ts
+++ b/angularjs/angular.d.ts
@@ -165,7 +165,7 @@ declare module angular {
dot: number;
codeName: string;
};
-
+
/**
* If window.name contains prefix NG_DEFER_BOOTSTRAP! when angular.bootstrap is called, the bootstrap process will be paused until angular.resumeBootstrap() is called.
* @param extraModules An optional array of modules that should be added to the original list of modules that the app was about to be bootstrapped with.
@@ -181,6 +181,13 @@ declare module angular {
animation(name: string, animationFactory: Function): IModule;
animation(name: string, inlineAnnotatedFunction: any[]): IModule;
animation(object: Object): IModule;
+ /**
+ * Use this method to register a component.
+ *
+ * @param name The name of the component.
+ * @param options A definition object passed into the component.
+ */
+ component(name: string, options: IComponentOptions): IModule;
/**
* Use this method to register work which needs to be performed on module loading.
*
@@ -1620,6 +1627,29 @@ declare module angular {
totalPendingRequests: number;
}
+ ///////////////////////////////////////////////////////////////////////////
+ // Component
+ // see http://angularjs.blogspot.com.br/2015/11/angularjs-15-beta2-and-14-releases.html
+ // and http://toddmotto.com/exploring-the-angular-1-5-component-method/
+ ///////////////////////////////////////////////////////////////////////////
+
+ interface IComponentOptions {
+ bindings?: Object;
+ controller?: string | Function;
+ controllerAs?: string;
+ isolate?: boolean;
+ template?: string | IComponentTemplateFn;
+ templateUrl?: string | IComponentTemplateFn;
+ transclude?: boolean;
+ restrict?: string;
+ $canActivate?: Function;
+ $routeConfig?: Object;
+ }
+
+ interface IComponentTemplateFn {
+ ( $element?: IAugmentedJQuery, $attrs?: IAttributes ): string;
+ }
+
///////////////////////////////////////////////////////////////////////////
// Directive
// see http://docs.angularjs.org/api/ng.$compileProvider#directive
diff --git a/api-error-handler/api-error-handler-tests.ts b/api-error-handler/api-error-handler-tests.ts
index 83df91e86..fc92cf9a7 100644
--- a/api-error-handler/api-error-handler-tests.ts
+++ b/api-error-handler/api-error-handler-tests.ts
@@ -1,7 +1,7 @@
///
-import errorHandler = require('api-error-handler');
-import express = require('express');
+import * as errorHandler from 'api-error-handler';
+import * as express from 'express';
var api = express.Router();
api.get('/users/:userid', function (req, res, next) {
@@ -9,3 +9,5 @@ api.get('/users/:userid', function (req, res, next) {
});
api.use(errorHandler());
+
+let res: errorHandler.Response;
diff --git a/api-error-handler/api-error-handler.d.ts b/api-error-handler/api-error-handler.d.ts
index 61a63825d..90318acd0 100644
--- a/api-error-handler/api-error-handler.d.ts
+++ b/api-error-handler/api-error-handler.d.ts
@@ -6,7 +6,23 @@
///
declare module 'api-error-handler' {
- import express = require('express');
+ import * as express from 'express';
+
+ namespace apiErrorHandler {
+
+ // Body response: the JSON returned by api-error-handler
+ // See https://github.com/expressjs/api-error-handler/blob/1.0.0/index.js
+ interface Response {
+ status: number;
+ stack?: string;
+ message: string;
+
+ // Client errors
+ code?: any;
+ name?: string;
+ type?: any;
+ }
+ }
function apiErrorHandler(options?: any): express.ErrorRequestHandler;
diff --git a/aws-sdk/aws-sdk-tests.ts.tscparams b/aws-sdk/aws-sdk-tests.ts.tscparams
deleted file mode 100644
index 70401a77e..000000000
--- a/aws-sdk/aws-sdk-tests.ts.tscparams
+++ /dev/null
@@ -1 +0,0 @@
---noImplicitAny --module commonjs --target es5
\ No newline at end of file
diff --git a/backbone.localstorage/backbone.localstorage-tests.ts b/backbone.localstorage/backbone.localstorage-tests.ts
new file mode 100644
index 000000000..0d44897a8
--- /dev/null
+++ b/backbone.localstorage/backbone.localstorage-tests.ts
@@ -0,0 +1,6 @@
+///
+
+var store: Store = new Store('testStore');
+store.findAll();
+
+store.save();
diff --git a/backbone.localstorage/backbone.localstorage.d.ts b/backbone.localstorage/backbone.localstorage.d.ts
new file mode 100644
index 000000000..122c47587
--- /dev/null
+++ b/backbone.localstorage/backbone.localstorage.d.ts
@@ -0,0 +1,51 @@
+// Type definitions for backbone.localStorage 1.0.0
+// Project: https://github.com/jeromegn/Backbone.localStorage
+// Definitions by: Louis Grignon
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module Backbone {
+ interface Serializer {
+ serialize(item: any): any;
+ deserialize(data: any): any;
+ }
+
+ class LocalStorage {
+ name: string;
+ serializer: Serializer;
+ records: string[];
+
+ constructor(name: string, serializer?: Serializer);
+
+ save(): void;
+
+ // Add a model, giving it a (hopefully)-unique GUID, if it doesn't already
+ // have an id of it's own.
+ create(model: any): any;
+
+ // Update a model by replacing its copy in `this.data`.
+ update(model: any): any;
+
+ // Retrieve a model from `this.data` by id.
+ find(model: any): any;
+
+ // Return the array of all models currently in storage.
+ findAll(): any;
+
+ // Delete a model from `this.data`, returning it.
+ destroy(model: T): T;
+
+ localStorage(): any;
+
+ // Clear localStorage for specific collection.
+ _clear(): void;
+
+ _storageSize(): number;
+
+ _itemName(id: any): string;
+ }
+}
+
+import Store = Backbone.LocalStorage;
+
diff --git a/bcrypt-nodejs/bcrypt-nodejs-tests.ts b/bcrypt-nodejs/bcrypt-nodejs-tests.ts
new file mode 100644
index 000000000..2a151c1c7
--- /dev/null
+++ b/bcrypt-nodejs/bcrypt-nodejs-tests.ts
@@ -0,0 +1,30 @@
+///
+
+import bCrypt = require("bcrypt-nodejs");
+
+function test_sync() {
+ var salt1 = bCrypt.genSaltSync();
+ var salt2 = bCrypt.genSaltSync(8);
+
+ var hash1 = bCrypt.hashSync('super secret');
+ var hash2 = bCrypt.hashSync('super secret', salt1);
+
+ var compare1 = bCrypt.compareSync('super secret', hash1);
+
+ var rounds1 = bCrypt.getRounds(hash2);
+}
+
+function test_async() {
+ var cbString = (error: Error, result: string) => {};
+ var cbVoid = () => {};
+ var cbBoolean = (error: Error, result: boolean) => {};
+
+ bCrypt.genSalt(8, cbString);
+
+ var salt = bCrypt.genSaltSync();
+ bCrypt.hash('super secret', salt, cbString);
+ bCrypt.hash('super secret', salt, cbVoid, cbString);
+
+ var hash = bCrypt.hashSync('super secret');
+ bCrypt.compare('super secret', hash, cbBoolean);
+}
\ No newline at end of file
diff --git a/bcrypt-nodejs/bcrypt-nodejs.d.ts b/bcrypt-nodejs/bcrypt-nodejs.d.ts
new file mode 100644
index 000000000..32b735d68
--- /dev/null
+++ b/bcrypt-nodejs/bcrypt-nodejs.d.ts
@@ -0,0 +1,68 @@
+// Type definitions for bcrypt-nodejs
+// Project: https://github.com/shaneGirish/bcrypt-nodejs
+// Definitions by: David Broder-Rodgers
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module "bcrypt-nodejs" {
+ /**
+ * Generate a salt synchronously
+ * @param rounds Number of rounds to process the data for (default - 10)
+ * @return Generated salt
+ */
+ export function genSaltSync(rounds?: number): string;
+
+ /**
+ * Generate a salt asynchronously
+ * @param rounds Number of rounds to process the data for (default - 10)
+ * @param callback Callback with error and resulting salt, to be fired once the salt has been generated
+ */
+ export function genSalt(rounds: number, callback: (error: Error, result: string) => void): void;
+
+ /**
+ * Generate a hash synchronously
+ * @param data Data to be encrypted
+ * @param salt Salt to be used in encryption (default - new salt generated with 10 rounds)
+ * @return Generated hash
+ */
+ export function hashSync(data: string, salt?: string): string;
+
+ /**
+ * Generate a hash asynchronously
+ * @param data Data to be encrypted
+ * @param salt Salt to be used in encryption
+ * @param callback Callback with error and hashed result, to be fired once the data has been encrypted
+ */
+ export function hash(data: string, salt: string, callback: (error: Error, result: string) => void): void;
+
+ /**
+ * Generate a hash asynchronously
+ * @param data Data to be encrypted
+ * @param salt Salt to be used in encryption
+ * @param progressCallback Callback to be fired multiple times during the hash calculation to signify progress
+ * @param callback Callback with error and hashed result, to be fired once the data has been encrypted
+ */
+ export function hash(data: string, salt: string, progressCallback: () => void, callback: (error: Error, result: string) => void): void;
+
+ /**
+ * Compares data with a hash synchronously
+ * @param data Data to be compared
+ * @param hash Hash to be compared to
+ * @return true if matching, false otherwise
+ */
+ export function compareSync(data: string, hash: string): boolean;
+
+ /**
+ * Compares data with a hash asynchronously
+ * @param data Data to be compared
+ * @param hash Hash to be compared to
+ * @param callback Callback with error and match result, to be fired once the data has been compared
+ */
+ export function compare(data: string, hash: string, callback: (error: Error, result: boolean) => void): void;
+
+ /**
+ * Get number of rounds used for hash
+ * @param hash Hash from which the number of rounds used should be extracted
+ * @return number of rounds used to encrypt a given hash
+ */
+ export function getRounds(hash: string): number;
+}
diff --git a/bluebird/bluebird-tests.ts b/bluebird/bluebird-tests.ts
index bd4f46fc4..278b1d229 100644
--- a/bluebird/bluebird-tests.ts
+++ b/bluebird/bluebird-tests.ts
@@ -85,15 +85,15 @@ var bazProm: Promise;
// - - - - - - - - - - - - - - - - -
-var numThen: Promise.Thenable;
-var strThen: Promise.Thenable;
-var anyThen: Promise.Thenable;
-var boolThen: Promise.Thenable;
-var objThen: Promise.Thenable