diff --git a/router5/router5-tests.ts b/router5/router5-tests.ts
new file mode 100644
index 000000000..bc1bfba9a
--- /dev/null
+++ b/router5/router5-tests.ts
@@ -0,0 +1,28 @@
+///
+
+import Router5, {loggerPlugin, RouteNode, Router5 as _Router5} from 'router5';
+
+const router1: Router5 = new Router5();
+const router2: Router5 = new _Router5();
+
+[router1, router2].forEach(function (router: Router5) {
+ const settingsNode: RouteNode = new RouteNode('settings', '/settings');
+
+ router
+ .setOption('useHash', true)
+ .setOption('defaultRoute', 'home');
+
+ router.setAdditionalArgs([]);
+
+ router
+ .add(settingsNode)
+ .addNode('home', '/')
+ .addNode('profile', '/profile', function () {
+ return false;
+ })
+ .usePlugin(loggerPlugin())
+ .useMiddleware(function () {})
+ .useMiddleware(function () {}, function () {})
+ .start()
+ .stop();
+});
diff --git a/router5/router5.d.ts b/router5/router5.d.ts
new file mode 100644
index 000000000..a15187ac0
--- /dev/null
+++ b/router5/router5.d.ts
@@ -0,0 +1,90 @@
+// Type definitions for router5
+// Project: https://github.com/router5/router5
+// Definitions by: Matthew Dahl
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module 'router5' {
+ interface constants {
+ ROUTER_NOT_STARTED: String;
+ ROUTER_ALREADY_STARTED: String;
+ ROUTE_NOT_FOUND: String;
+ SAME_STATES: String;
+ CANNOT_DEACTIVATE: String;
+ CANNOT_ACTIVATE: String;
+ TRANSITION_ERR: String;
+ TRANSITION_CANCELLED: String;
+ }
+
+ interface State {
+ _meta: Array