diff --git a/pako/pako-tests.ts b/pako/pako-tests.ts
new file mode 100644
index 000000000..b7bb504ca
--- /dev/null
+++ b/pako/pako-tests.ts
@@ -0,0 +1,26 @@
+///
+
+import pako = require("pako");
+
+var test = { my: 'super', puper: [456, 567], awesome: 'pako' };
+
+var binaryString = pako.deflate(JSON.stringify(test), { to: 'string' });
+
+//
+// Here you can do base64 encode, make xhr requests and so on.
+//
+
+var restored = JSON.parse(pako.inflate(binaryString, { to: 'string' }));
+
+var pako = require('pako')
+ , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+
+var deflate = new pako.Deflate({ level: 3});
+
+deflate.push(chunk1, false);
+deflate.push(chunk2, true); // true -> last chunk
+
+if (deflate.err) { throw new Error(deflate.err); }
+
+console.log(deflate.result);
\ No newline at end of file
diff --git a/pako/pako.d.ts b/pako/pako.d.ts
new file mode 100644
index 000000000..42465cee1
--- /dev/null
+++ b/pako/pako.d.ts
@@ -0,0 +1,60 @@
+// Type definitions for pako 0.2.8
+// Project: https://github.com/nodeca/pako
+// Definitions by: Denis Cappellin
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module Pako {
+
+ /**
+ * Compress data with deflate algorithm and options.
+ */
+ export function deflate( data: Uint8Array | Array | string, options?: any ): string;
+ /**
+ * The same as deflate, but creates raw data, without wrapper (header and adler32 crc).
+ */
+ export function deflateRaw( data: Uint8Array | Array | string, options?: any ): string;
+ /**
+ * The same as deflate, but create gzip wrapper instead of deflate one.
+ */
+ export function gzip( data: Uint8Array | Array | string, options?: any ): string;
+ /**
+ * Decompress data with inflate/ungzip and options. Autodetect format via wrapper header
+ * by default. That's why we don't provide separate ungzip method.
+ */
+ export function inflate( data: Uint8Array | Array | string, options?: any ): Uint8Array | Array | string;
+ /**
+ * The same as inflate, but creates raw data, without wrapper (header and adler32 crc).
+ */
+ export function inflateRaw( data: Uint8Array | Array | string, options?: any ): Uint8Array | Array | string;
+ /**
+ * Just shortcut to inflate, because it autodetects format by header.content. Done for convenience.
+ */
+ export function ungzip( data: Uint8Array | Array | string, options?: any ): Uint8Array | Array | string;
+
+ export interface Deflate {
+ /**
+ *
+ */
+ constructor( options?: any );
+ err: number;
+ msg: string;
+ result: Uint8Array | Array;
+ onData( chunk: Uint8Array | Array | string ): void;
+ onEnd( status: number ): void;
+ push( data: Uint8Array | Array | ArrayBuffer | string, mode?: number | boolean ): boolean;
+ }
+
+ export interface Inflate {
+ constructor( options?: any );
+ err: number;
+ msg: string;
+ result: Uint8Array | Array | string;
+ onData( chunk: Uint8Array | Array | string ): void;
+ onEnd( status: number ): void;
+ push( data: Uint8Array | Array | ArrayBuffer | string, mode?: number | boolean ): boolean;
+ }
+}
+
+declare module 'pako' {
+ export = Pako;
+}