declare function GulpJade(params?: GulpJade.Params): any;

declare namespace GulpJade {
    interface Params {
        /*******
         * JADE API OPTIONS
         *******/

        /**
         * If the doctype is not specified as part of the
         * template, you can specify it here. It is sometimes
         * useful to get self-closing tags and remove mirroring
         * of boolean attributes.
         */
        doctype?: string | undefined;

        /**
         * Adds whitespace to the resulting html to make it
         * easier for a human to read using '  ' as indentation.
         * If a string is specified, that will be used as
         * indentation instead (e.g. '\t').
         */
        pretty?: boolean | string | undefined;

        /**
         * Use a self namespace to hold the locals (false by default)
         */
        self?: boolean | undefined;

        /**
         * If set to true, the tokens and function body is logged
         * to stdout
         */
        debug?: boolean | undefined;

        /**
         * If set to true, the function source will be included in the
         * compiled template for better error messages (sometimes useful
         * in development). It is enabled by default unless used with
         * express in production mode.
         */
        compileDebug?: boolean | undefined;

        /**
         * If set to true, compiled functions are cached. filename
         * must be set as the cache key.
         */
        cache?: boolean | undefined;

        /*******
         * GULP-JADE OPTIONS
         *******/

        /**
         * Used to set a version of jade other than this library's
         * dependency, or to customise filters.
         */
        jade?: any;

        /**
         * Compile to JS instead of HTML.
         */
        client?: boolean | undefined;

        /**
         * Locals to be used while parsing jade files. Takes
         * precedence over data.
         */
        locals?: any;

        /**
         * Data to be used while parsing jade files. Has lower
         * precedence than locals.
         */
        data?: any;
    }
}

export = GulpJade;
