import bodyParser from "body-parser";
import { BootstrapConstructor } from "./bootstrap-constructor";
import { ApplicationBuilderMiddleware } from "./application-builder";
import { HelmetOptions } from "helmet";
import { IRouter } from "express";
export type ApplicationRouter = {
    hostingPath: string;
    router: IRouter;
};
/**
 * A convenience class that provides a way to create middleware instances without the need to manually create them.
 */
export declare class Convenience {
    private readonly customConstructor;
    /**
     * Creates a new instance of the convenience class.
     * @param DIConstructor The dependency injection constructor to use to create instances of middleware.
     */
    constructor(customConstructor?: BootstrapConstructor);
    /**
     * Creates a new instance of the body parser middleware for url encoding.
     * @param urlEncodingOptions  The options to use for the url encoding middleware.
     * @returns {ApplicationBuilderMiddleware} A new instance of the body parser middleware for url encoding.
     */
    bodyParserURLEncodingMiddleware(urlEncodingOptions?: bodyParser.OptionsUrlencoded): ApplicationBuilderMiddleware;
    /**
     * Creates a new instance of the body parser middleware for JSON encoding.
     * @param jsonOptions  The options to use for the JSON encoding middleware.
     * @returns  {ApplicationBuilderMiddleware} A new instance of the body parser middleware for JSON encoding.
     */
    bodyParserJSONEncodingMiddleware(jsonOptions?: bodyParser.OptionsJson): ApplicationBuilderMiddleware;
    /**
     * Creates a new instance of the body parser middleware for raw encoding.
     * @param helmetOptions The options to use for the raw encoding middleware.
     * @returns  {ApplicationBuilderMiddleware} A new instance of the helmet middleware.
     */
    helmetMiddleware(helmetOptions?: Readonly<HelmetOptions>): (req: import("http").IncomingMessage, res: import("http").ServerResponse, next: (err?: unknown) => void) => void;
    /**
     * Creates a new instance of the swagger API documentation middleware.
     * @param swaggerDocument The swagger document to use for the API documentation, typically a json object.
     * @param hostPath The host path to use for the swagger API documentation.
     * @returns {ApplicationRouter} A new instance of the swagger API documentation middleware.
     */
    swaggerAPIDocs(swaggerDocument: any, hostPath?: string): ApplicationRouter;
    /**
     * Injects a specified object into the request under a given property name.
     * @param requestPropertyName - The name of the property to add to the request object.
     * @param object - The object to inject into the request.
     * @returns {ApplicationBuilderMiddleware} A middleware function that injects the object into the request.
     */
    injectInRequestMiddleware(requestPropertyName: string, object: any): ApplicationBuilderMiddleware;
}
