// Type definitions for denodeify 1.2.1
// Project: https://github.com/matthew-andrews/denodeify
// Definitions by: joaomoreno
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module "denodeify" {
function _(fn: _.F0, transformer?: _.M): () => Promise;
function _(fn: _.F1, transformer?: _.M): (a:A) => Promise;
function _(fn: _.F2, transformer?: _.M): (a:A, b:B) => Promise;
function _(fn: _.F3, transformer?: _.M): (a:A, b:B, c:C) => Promise;
function _(fn: _.F4, transformer?: _.M): (a:A, b:B, c:C, d:D) => Promise;
function _(fn: _.F5, transformer?: _.M): (a:A, b:B, c:C, d:D, e:E) => Promise;
function _(fn: _.F6, transformer?: _.M): (a:A, b:B, c:C, d:D, e:E, f:F) => Promise;
function _(fn: _.F7, transformer?: _.M): (a:A, b:B, c:C, d:D, e:E, f:F, g:G) => Promise;
function _(fn: _.F8, transformer?: _.M): (a:A, b:B, c:C, d:D, e:E, f:F, g:G, h:H) => Promise;
function _(fn: _.F, transformer?: _.M): (...args) => Promise;
module _ {
type Callback = (err: Error, result: R) => any;
type F0 = (cb: Callback) => any;
type F1 = (a:A, cb: Callback) => any;
type F2 = (a:A, b:B, cb: Callback) => any;
type F3 = (a:A, b:B, c:C, cb: Callback) => any;
type F4 = (a:A, b:B, c:C, d:D, cb: Callback) => any;
type F5 = (a:A, b:B, c:C, d:D, e:E, cb: Callback) => any;
type F6 = (a:A, b:B, c:C, d:D, e:E, f:F, cb: Callback) => any;
type F7 = (a:A, b:B, c:C, d:D, e:E, f:F, g:G, cb: Callback) => any;
type F8 = (a:A, b:B, c:C, d:D, e:E, f:F, g:G, h:H, cb: Callback) => any;
type F = (...args) => any;
type M = (err: Error, ...args) => any[];
}
export = _;
}