import { Request, Response, NextFunction, RequestHandler, ErrorRequestHandler } from 'express';
import { InjectionToken } from '@decorators/di';
import { Type } from './types';
export type MiddlewareFunction = (req: Request, res: Response, next: NextFunction) => void;
export interface MiddlewareClass {
    use: MiddlewareFunction;
}
export type Middleware = MiddlewareFunction | Type<MiddlewareClass>;
export type ErrorMiddlewareFunction = (error: Error, request: Request, response: Response, next: NextFunction) => void;
export interface ErrorMiddlewareClass {
    use: ErrorMiddlewareFunction;
}
export type ErrorMiddleware = ErrorMiddlewareFunction | Type<ErrorMiddlewareClass>;
/**
 * Create request middleware handler that uses class or function provided as middleware
 */
export declare function middlewareHandler(middleware: Middleware): RequestHandler;
/**
 * Error Middleware class registration DI token
 */
export declare const ERROR_MIDDLEWARE: InjectionToken;
/**
 * Add error middleware to the app
 */
export declare function errorMiddlewareHandler(): ErrorRequestHandler;
