diff --git a/ui-router-extras/ui-router-extras-tests.ts b/ui-router-extras/ui-router-extras-tests.ts
new file mode 100644
index 0000000000..22d9e4f733
--- /dev/null
+++ b/ui-router-extras/ui-router-extras-tests.ts
@@ -0,0 +1,23 @@
+///
+
+var myApp = angular.module('testModule')
+
+myApp.config(($stateProvider: angular.ui.IStateProvider, $stickyStateProvider: angular.ui.IStickyStateProvider) => {
+ var state: angular.ui.IStickyState = {
+ name: 'test',
+ sticky: true,
+ controller: ($previousState: angular.ui.IPreviousStateService) => {
+ $previousState.memo('test-memo1');
+ $previousState.memo('test-memo2', 'test-state-name2');
+ $previousState.memo('test-memo3', 'test-state-name3', {});
+ $previousState.forget('test-memo3');
+ $previousState.go('test-memo2', {
+ location: true,
+ notify: true
+ });
+ }
+ };
+
+ $stickyStateProvider.enableDebug(true);
+ $stateProvider.state(state);
+});
diff --git a/ui-router-extras/ui-router-extras.d.ts b/ui-router-extras/ui-router-extras.d.ts
new file mode 100644
index 0000000000..8e0c42828e
--- /dev/null
+++ b/ui-router-extras/ui-router-extras.d.ts
@@ -0,0 +1,83 @@
+// Type definitions for UI-Router Extras 0.0.14+ (ct.ui.router.extras module)
+// Project: https://github.com/christopherthielen/ui-router-extras
+// Definitions by: Michael Putters
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+// Support for AMD require
+declare module 'angular-ui-router-extras' {
+ var _: string;
+ export = _;
+}
+
+declare module angular.ui {
+
+ /**
+ * Previous state
+ */
+ interface IPreviousState {
+ state: IState;
+ params?: {};
+ }
+
+ /**
+ * Previous state service
+ */
+ interface IPreviousStateService {
+
+ /**
+ * Get a previous state
+ * @param memoName Memo name
+ * @return Previous state
+ */
+ get(memoName?: string): IPreviousState;
+
+ /**
+ * Go to a state
+ * @param memoName Memo name
+ * @param options State options
+ * @return Promise
+ */
+ go(memoName: string, options?: IStateOptions): angular.IPromise;
+
+ /**
+ * Memorize a state
+ * @param memoName Memo name
+ * @param defaultStateName Default state name
+ * @param defaultStateParams Default state parameters
+ */
+ memo(memoName: string, defaultStateName?: string, defaultStateParams?: {}): void;
+
+ /**
+ * Forget a memorized name
+ * @param memoName Memo name
+ */
+ forget(memoName: string): void;
+
+ }
+
+ /**
+ * Sticky state
+ */
+ interface IStickyState extends angular.ui.IState {
+ sticky?: boolean;
+ }
+
+ /**
+ * Sticky state service
+ */
+ interface IStickyStateService {
+ getInactiveStates(): IStickyState[];
+ }
+
+ /**
+ * Sticky state provider
+ */
+ interface IStickyStateProvider extends angular.IServiceProvider {
+ debugMode(): boolean;
+ enableDebug(enabled: boolean): boolean;
+ registerStickyState(state: IStickyState): void;
+ }
+
+}