diff --git a/pg-promise/pg-promise-tests.ts b/pg-promise/pg-promise-tests.ts
new file mode 100644
index 0000000000..dcfcea6c9e
--- /dev/null
+++ b/pg-promise/pg-promise-tests.ts
@@ -0,0 +1,34 @@
+///
+
+import * as pgpromise from "pg-promise";
+
+let db: pgpromise.PromiseClient;
+let pgp: pgpromise.PgPromise;
+
+db.one('sql', { 'values': 'values' });
+db.oneOrNone('sql', { 'values': 'values' });
+db.many('sql', { 'values': 'values' });
+db.many('sql', { 'values': 'values' }, { 'optional': 'optional' });
+
+// All functions
+db.none('sql');
+db.one('sql');
+db.many('sql');
+db.query('sql');
+
+
+db.any('sql');
+db.oneOrNone('sql');
+db.manyOrNone('sql');
+
+db.func('sql');
+db.proc('sql');
+
+db.task(() => {});
+db.tx(() => {});
+
+// Optional values
+db.none('sql', { 'values': 'values' });
+
+// QRM parameter
+db.none('sql', { 'values': 'values' }, { 'QRM': 'QRM' });
diff --git a/pg-promise/pg-promise-tests.ts.tscparams b/pg-promise/pg-promise-tests.ts.tscparams
new file mode 100644
index 0000000000..14fce22a5c
--- /dev/null
+++ b/pg-promise/pg-promise-tests.ts.tscparams
@@ -0,0 +1 @@
+--target ES6
diff --git a/pg-promise/pg-promise.d.ts b/pg-promise/pg-promise.d.ts
new file mode 100644
index 0000000000..c6b5d3e0d8
--- /dev/null
+++ b/pg-promise/pg-promise.d.ts
@@ -0,0 +1,80 @@
+// Type definitions for pg-promise
+// Project: https://github.com/vitaly-t/pg-promise
+// Definitions by: Jörg Dotzki
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+// tsc --noImplicitAny --module commonjs --target ES6 pg-promise/pg-promise-tests.ts
+
+///
+
+
+declare module PgPromise {
+}
+
+
+declare module "pg-promise" {
+
+ import * as pg from "pg";
+
+ function e(options?: {
+
+ pgFormatting?: Object;
+ promiseLib?: Object;
+ connect?: Function;
+ disconnect?: Function;
+ query?: Function;
+ task?: Function;
+ transact?: Function;
+ error?: Function;
+ extend?: Function;
+ noLocking?: Function;
+ }): e.PgPromise;
+
+
+
+ module e {
+
+ export interface PromiseClient {
+
+ none(queryText: string, values?: any[] | any, qrm?: any): Promise;
+ one(queryText: string, values?: any[] | any, qrm?: any): Promise;
+ many(queryText: string, values?: any[] | any, qrm?: any): Promise;
+ query(queryText: string, values?: any[] | any, qrm?: any): Promise;
+
+
+ any(queryText: string, values?: any[] | any, qrm?: any): Promise;
+ oneOrNone(queryText: string, values?: any[] | any, qrm?: any): Promise;
+ manyOrNone(queryText: string, values?: any[] | any, qrm?: any): Promise;
+
+ func(queryText: string, values?: any[] | any, qrm?: any): Promise;
+ proc(queryText: string, values?: any[] | any): Promise;
+
+ task(func: Function): Promise;
+ tx(func: Function): Promise;
+ }
+
+ export interface PgPromise {
+ connect(callback?: (err: Error) => void): void;
+ end(): void;
+ (connectionString: string): PromiseClient;
+
+ as: convert;
+ }
+
+ export interface convert {
+
+ bool(value: any): boolean;
+ number(value: any): number;
+ text(value: any, raw: any): string;
+ name(value: any): string;
+ date(value: any, raw: any): string;
+ json(value: any, raw: any): string;
+ array(value: any): Array;
+ csv(value: any): string;
+ func(func: Function, raw: any, obj: any): Function;
+ format(query: string, values: any): any;
+ }
+ }
+
+ export = e;
+}