diff --git a/soap/soap-tests.ts b/soap/soap-tests.ts
new file mode 100644
index 000000000..e92257595
--- /dev/null
+++ b/soap/soap-tests.ts
@@ -0,0 +1,19 @@
+///
+
+import * as soap from 'soap';
+
+const url = 'http://example.com/wsdl?wsdl';
+const wsdlOptions = { name: 'value' };
+
+soap.createClient(url, wsdlOptions, function(err: any, client: soap.Client) {
+ let securityOptions = { 'hasTimeStamp': false };
+ client.setSecurity(new soap.WSSecurity('user', 'password', securityOptions));
+ client.addSoapHeader({});
+ client['create']({ name: 'value' }, function(err, result) {
+ // result is an object
+ });
+ client['create']({ name: 'value' }, function(err, result) {
+ // result is an object
+ }, {});
+});
+
diff --git a/soap/soap.d.ts b/soap/soap.d.ts
new file mode 100644
index 000000000..2685953cc
--- /dev/null
+++ b/soap/soap.d.ts
@@ -0,0 +1,17 @@
+// Type definitions for soap
+// Project: https://www.npmjs.com/package/soap
+// Definitions by: Nicole Wang
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare module 'soap' {
+ class WSSecurity {
+ constructor(username: string, password: string, options: any);
+ }
+ interface Client {
+ setSecurity(s: WSSecurity): void;
+ [method: string]: (args: any, fn: (err: any, result: any) => void, options?: any) => void;
+ addSoapHeader(headJSON: any): void;
+ }
+ function createClient(wsdlPath: string, options: any, fn: (err: any, client: Client) => void): void;
+
+}
\ No newline at end of file