diff --git a/redux/redux-tests.ts b/redux/redux-tests.ts
new file mode 100644
index 000000000..cc0c93499
--- /dev/null
+++ b/redux/redux-tests.ts
@@ -0,0 +1,32 @@
+///
+
+function counter(state: any, action: any) {
+ if (!state) {
+ state = 0;
+ }
+ switch (action.type) {
+ case 'INCREMENT':
+ return state + 1;
+ case 'DECREMENT':
+ return state - 1;
+ default:
+ return state;
+ }
+}
+
+function loggingMiddleware() {
+ return (next: Redux.Dispatch) => (action: any) => {
+ console.log(action.type);
+ next(action);
+ };
+}
+
+let createStoreWithMiddleware = Redux.applyMiddleware(loggingMiddleware)(Redux.createStore);
+let store = createStoreWithMiddleware(counter);
+
+
+store.subscribe(() =>
+ console.log(store.getState())
+);
+
+store.dispatch({ type: 'INCREMENT' });
diff --git a/redux/redux.d.ts b/redux/redux.d.ts
new file mode 100644
index 000000000..1f33d1559
--- /dev/null
+++ b/redux/redux.d.ts
@@ -0,0 +1,51 @@
+// Type definitions for Redux v1.0.0
+// Project: https://github.com/rackt/redux
+// Definitions by: William Buchwalter , Vincent Prouillet
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module Redux {
+
+ interface ActionCreator extends Function {
+ (...args: any[]): any;
+ }
+
+ interface Reducer extends Function {
+ (state: any, action: any): any;
+ }
+
+ interface Dispatch extends Function {
+ (action: any): any;
+ }
+
+ interface StoreMethods {
+ dispatch: Dispatch;
+ getState(): any;
+ }
+
+
+ interface MiddlewareArg {
+ dispatch: Dispatch;
+ getState: Function;
+ }
+
+ interface Middleware extends Function {
+ (obj: MiddlewareArg): Function;
+ }
+
+ class Store {
+ getReducer(): Reducer;
+ replaceReducer(nextReducer: Reducer): void;
+ dispatch(action: any): any;
+ getState(): any;
+ subscribe(listener: Function): Function;
+ }
+
+ function createStore(reducer: Reducer, initialState?: any): Store;
+ function bindActionCreators(actionCreators: T, dispatch: Dispatch): T;
+ function combineReducers(reducers: any): Reducer;
+ function applyMiddleware(...middleware: Middleware[]): Function;
+}
+
+declare module "redux" {
+ export = Redux;
+}
\ No newline at end of file