diff --git a/noisejs/noisejs-tests.ts b/noisejs/noisejs-tests.ts
new file mode 100644
index 0000000000..10c6a68bcf
--- /dev/null
+++ b/noisejs/noisejs-tests.ts
@@ -0,0 +1,10 @@
+///
+
+var noise = new Noise(Math.random());
+
+var simplex2_noise_val = noise.simplex2(0.1, 0.2);
+var simplex3_noise_val = noise.simplex3(0.1, 0.2, 0.3);
+var perlin2_noise_val = noise.perlin2(0.1, 0.2);
+var perlin3_noise_val = noise.perlin3(0.1, 0.2, 0.3);
+
+noise.seed(Math.random());
diff --git a/noisejs/noisejs.d.ts b/noisejs/noisejs.d.ts
new file mode 100644
index 0000000000..d671114357
--- /dev/null
+++ b/noisejs/noisejs.d.ts
@@ -0,0 +1,58 @@
+// Type definitions for noisejs
+// Project: https://github.com/xixixao/noisejs
+// Definitions by: Atsushi Izumihara
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare class Noise {
+ /**
+ * Passing in seed will seed this Noise instance
+ * @param {number} seed
+ * @return {Noise} Noise instance
+ */
+ constructor(seed?: number);
+
+ /**
+ * 2D simplex noise
+ * @param {number} x
+ * @param {number} y
+ * @return {number} noise value
+ */
+ simplex2(x: number, y: number): number;
+
+ /**
+ * 3D simplex noise
+ * @param {number} x
+ * @param {number} y
+ * @param {number} z
+ * @return {number} noise value
+ */
+ simplex3(x: number, y: number, z: number): number;
+
+ /**
+ * 2D Perlin Noise
+ * @param {number} x
+ * @param {number} y
+ * @return {number} noise value
+ */
+ perlin2(x: number, y: number): number;
+
+ /**
+ * 3D Perlin Noise
+ * @param {number} x
+ * @param {number} y
+ * @param {number} z
+ * @return {number} noise value
+ */
+ perlin3(x: number, y: number, z: number): number;
+
+ /**
+ * This isn't a very good seeding function, but it works ok. It supports 2^16
+ * different seed values. Write something better if you need more seeds.
+ * @param {number} seed [description]
+ */
+ seed(seed: number): void;
+}
+
+declare module "noisejs" {
+ export = Noise;
+}