diff --git a/webcola/webcola-tests.ts b/webcola/webcola-tests.ts
new file mode 100644
index 0000000000..9fc94d4132
--- /dev/null
+++ b/webcola/webcola-tests.ts
@@ -0,0 +1,30 @@
+///
+module WebColaTests {
+ var adaptor = cola.adaptor({
+ trigger: function() {
+ },
+ kick: function() {
+ },
+ on: function() {
+ },
+ drag: function() {
+ }
+ });
+
+ adaptor
+ .size([100, 100])
+ .avoidOverlaps(true)
+ .nodes({})
+ .links({})
+ .handleDisconnected(true)
+ .convergenceThreshold(0.001)
+ .constraints({})
+ .linkDistance(100)
+ .flowLayout('y', 0);
+
+ adaptor.start(1, 2, 3);
+ adaptor.dragstart({});
+ adaptor.dragend({});
+ adaptor.stop();
+ adaptor.resume();
+}
diff --git a/webcola/webcola.d.ts b/webcola/webcola.d.ts
new file mode 100644
index 0000000000..d9ce39c686
--- /dev/null
+++ b/webcola/webcola.d.ts
@@ -0,0 +1,35 @@
+// Type definitions for webcola 3.0.1
+// Project: https://github.com/tgdwyer/WebCola
+// Definitions by: Qinfeng Chen
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+declare module WebCola{
+ interface Adaptor {
+ avoidOverlaps(avodOverLaps: boolean): Adaptor;
+ constraints(constraints: any): Adaptor;
+ convergenceThreshold(convergenceThreshold: number): Adaptor;
+ dragend(node: { [index: number]: any }): void;
+ dragstart(node: { [index: number]: any }): void;
+ flowLayout(axis: string, minSeparation: number): Adaptor;
+ handleDisconnected(handleDisconnected: boolean): Adaptor;
+ links(links: any): Adaptor;
+ linkDistance(linkLength: number): Adaptor;
+ nodes(nodes: any): Adaptor;
+ resume(): void;
+ size(dimension: number[]): Adaptor;
+ start(
+ initialUnconstrainedIterations: number,
+ initialUserConstraintIterations: number,
+ initialAllConstraintsIterations: number
+ ): void;
+ stop(): void;
+ }
+
+ interface Cola {
+ adaptor(options: { [index:number]: any }): Adaptor;
+ start(): void;
+ stop(): void;
+ }
+}
+
+declare var cola: WebCola.Cola;
+