diff --git a/sandboxed-module/sandboxed-module-tests.ts b/sandboxed-module/sandboxed-module-tests.ts
new file mode 100644
index 000000000..a2e6ff2c4
--- /dev/null
+++ b/sandboxed-module/sandboxed-module-tests.ts
@@ -0,0 +1,28 @@
+// Type definitions for sandboxed-module v2.0.3
+// Project: https://github.com/felixge/node-sandboxed-module
+// Definitions by: Sven Reglitzki
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+import SandboxedModule = require("sandboxed-module");
+
+var sandboxedModule:SandboxedModule = SandboxedModule.load("foo");
+var sandboxedModuleExports:any = SandboxedModule.require("foo");
+
+var sandboxedModuleExportsWithOptions:any = SandboxedModule.require("foo", {
+ requires: {
+ someDep: {}
+ },
+ globals: {
+ theAnswer: 42
+ },
+ locals: {
+ someLocal: 1
+ },
+ sourceTransformers: {
+ identity: (src:string) => src
+ },
+ singleOnly: true,
+ sourceTransformersSingleOnly: true
+});
diff --git a/sandboxed-module/sandboxed-module.d.ts b/sandboxed-module/sandboxed-module.d.ts
new file mode 100644
index 000000000..94fb37450
--- /dev/null
+++ b/sandboxed-module/sandboxed-module.d.ts
@@ -0,0 +1,103 @@
+// Type definitions for sandboxed-module v2.0.3
+// Project: https://github.com/felixge/node-sandboxed-module
+// Definitions by: Sven Reglitzki
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module "sandboxed-module" {
+
+ interface SandboxOptions {
+ /**
+ * An object containing moduleIds and the values to inject for them when required by the sandboxed module.
+ * This does not affect children of the sandboxed module.
+ */
+ requires?: Object;
+ /**
+ * An object of global variables to inject into the sandboxed module.
+ */
+ globals?: Object;
+ /**
+ * An object of local variables to inject into the sandboxed module.
+ */
+ locals?: Object;
+ /**
+ * An object of named functions which will transform the source code required with SandboxedModule.require.
+ * For example, CoffeeScript & istanbul support is implemented with built-in sourceTransformer functions
+ * (see #registerBuiltInSourceTransformer).
+ *
+ * A source transformer receives the source (as it's been transformed thus far) and must return the transformed
+ * source (whether it's changed or unchanged).
+ *
+ * An example source transformer to change all instances of the number "3" to "5" would look like this:
+ *
+ * SandboxedModule.require('../fixture/baz', {
+ * sourceTransformers: {
+ * turn3sInto5s: function(source) {
+ * return source.replace(/3/g,'5');
+ * }
+ * }
+ * })
+ */
+ sourceTransformers?: Object;
+ /**
+ * If false, modules that are required by the sandboxed module will not be sandboxed. By default all modules
+ * required by the sandboxedModule will be sandboxed using the same options that were used for the original
+ * sandboxed module.
+ */
+ singleOnly?: boolean;
+ /**
+ * If false, the source transformers will not be run against modules required by the sandboxed module.
+ * By default it will take the same value as {@link SandboxOptions.singleOnly}.
+ */
+ sourceTransformersSingleOnly?: boolean;
+ }
+
+ class SandboxedModule {
+ /**
+ * See {@link SandboxOptions.requires}
+ */
+ required:Object;
+ /**
+ * See {@link SandboxOptions.globals}
+ */
+ globals:Object;
+ /**
+ * See {@link SandboxOptions.locals}
+ */
+ locals:Object;
+ /**
+ * See {@link SandboxOptions.sourceTransformers}.
+ */
+ sourceTransformers:Object;
+ /**
+ * The full path to the module.
+ */
+ filename:string;
+ /**
+ * The underlaying node.js Module instance.
+ */
+ module:string;
+ /**
+ * A getter returning the sandboxedModule.module.exports object.
+ */
+ exports:any;
+ /**
+ * Returns a new SandboxedModule where moduleId is a regular module path / id as you would normally pass into
+ * require(). The new module will be loaded in its own v8 context, but otherwise have access to the normal
+ * node.js environment.
+ *
+ * @param moduleId the ID of the module to load
+ * @param options the loading options
+ */
+ static load(moduleId:string, options?:SandboxOptions):SandboxedModule
+
+ /**
+ * Identical to {@link SandboxedModule.load()}, but returns sandboxedModule.exports directly.
+ *
+ * @param moduleId the ID of the module to require
+ * @param options the requiring options
+ */
+ static require(moduleId:string, options?:SandboxOptions):any
+ }
+
+ export = SandboxedModule;
+}