diff --git a/reflux/reflux-tests.ts b/reflux/reflux-tests.ts
new file mode 100644
index 000000000..afebd1a81
--- /dev/null
+++ b/reflux/reflux-tests.ts
@@ -0,0 +1,59 @@
+///
+///
+
+import Reflux = require("reflux");
+import React = require("react");
+
+var syncActions = Reflux.createActions([
+ "statusUpdate",
+ "statusEdited",
+ "statusAdded"
+]);
+
+
+var asyncActions = Reflux.createActions({
+ fireBall: {asyncResult: true}
+});
+
+asyncActions.fireBall.listen(function () {
+ // Trigger async action
+ setTimeout(() => this.completed(true), 1000);
+});
+
+
+// Creates a DataStore
+var statusStore = Reflux.createStore({
+
+ // Initial setup
+ init: function () {
+
+ // Register statusUpdate action
+ this.listenTo(asyncActions.fireBall, this.onFireBall);
+ },
+ // Callback
+ onFireBall: function (flag: boolean) {
+ var status = flag ? 'ONLINE' : 'OFFLINE';
+
+ // Pass on to listeners
+ this.trigger(status);
+ }
+});
+
+Reflux.createAction({
+ children: ["progressed", "completed", "failed"]
+});
+
+
+var actions = Reflux.createActions(["fireBall", "magicMissile"]);
+
+var Store = Reflux.createStore({
+ init: function () {
+ this.listenToMany(actions);
+ },
+ onFireBall: function () {
+ // whoooosh!
+ },
+ onMagicMissile: function () {
+ // bzzzzapp!
+ }
+});
diff --git a/reflux/reflux.d.ts b/reflux/reflux.d.ts
new file mode 100644
index 000000000..035bca7f3
--- /dev/null
+++ b/reflux/reflux.d.ts
@@ -0,0 +1,62 @@
+// Type definitions for RefluxJS
+// Project: https://github.com/reflux/refluxjs
+// Definitions by: Maurice de Beijer
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module RefluxCore {
+
+ interface StoreDefinition {
+ listenables?: any[],
+ init?: Function,
+ getInitialState?: Function,
+ [propertyName: string]: any;
+ }
+
+ interface ListenFn {
+ (...params: any[]):any,
+ completed: Function,
+ failed: Function
+ }
+ interface Listenable {
+ listen: ListenFn
+ }
+
+ interface Subscription {
+ stop: Function,
+ listenable: Listenable
+ }
+
+ interface Store {
+ hasListener(listenable: Listenable): boolean,
+ listenToMany(listenables: Listenable[]): void,
+ validateListening(listenable: Listenable): string,
+ listenTo(listenable: Listenable, callback: Function, defaultCallback?: Function): Subscription,
+ stopListeningTo(listenable: Listenable): boolean,
+ stopListeningToAll(): void,
+ fetchInitialState(listenable: Listenable, defaultCallback: Function): void,
+ trigger(state: any):void;
+ }
+
+ interface ActionsDefinition {
+ [index: string]:any
+ }
+
+ interface Actions {
+ [index: string]: Listenable
+ }
+
+ function createStore(definition: StoreDefinition): Store;
+
+ function createAction(definition: ActionsDefinition): any;
+
+ function createActions(definition: ActionsDefinition): any;
+ function createActions(definitions: string[]): any;
+
+ function listenTo(store: Store, handler: string):void;
+ function setState(state: any):void;
+}
+
+declare module "reflux" {
+ export = RefluxCore;
+}
+