diff --git a/ndarray.d.ts b/ndarray.d.ts
new file mode 100644
index 0000000..3456a6a
--- /dev/null
+++ b/ndarray.d.ts
@@ -0,0 +1,30 @@
+declare function ndarray(data: ndarray.Data, shape?: number[], stride?: number[], offset?: number): ndarray.NdArray;
+
+declare namespace ndarray {
+  type Data =
+    Array<number> | Int8Array | Int16Array | Int32Array |
+    Uint8Array | Uint16Array | Uint32Array |
+    Float32Array | Float64Array | Uint8ClampedArray;
+
+  interface NdArray {
+    data: Data;
+    shape: number[];
+    stride: number[];
+    offset: number;
+    dtype: 'int8' | 'int16' | 'int32' | 'uint8' | 'uint16' |'uint32' |
+           'float32' | 'float64' | 'array'| 'uint8_clamped' | 'buffer' | 'generic';
+    size: number;
+    order: number[];
+    dimension: number;
+    get(...args: number[]): number;
+    set(...args: number[]): number;
+    index(...args: number[]): number;
+    lo(...args: number[]): NdArray;
+    hi(...args: number[]): NdArray;
+    step(...args: number[]): NdArray;
+    transpose(...args: number[]): NdArray;
+    pick(...args: number[]): NdArray;
+  }
+}
+
+export = ndarray;
diff --git a/package.json b/package.json
index e570f4a..9dc7009 100644
--- a/package.json
+++ b/package.json
@@ -62,5 +62,6 @@
       "iphone/6.0..latest",
       "android-browser/4.2..latest"
     ]
-  }
+  },
+  "typings": "./ndarray.d.ts"
 }