import * as express from 'express'; export declare const MiddlewareBrand: unique symbol; export declare type MiddlewareBrand = typeof MiddlewareBrand; export declare type MiddlewareFn = (req: express.Request, res: express.Response) => Promise; export declare type MiddlewareHandler = { (req: express.Request, res: express.Response, next: express.NextFunction): void; [MiddlewareBrand]: T; }; export declare type MiddlewareRequestHandler = express.RequestHandler | MiddlewareHandler; declare type MiddlewareOutput = T extends { [MiddlewareBrand]: infer R; } ? R : {}; export declare function middlewareFn(fn: MiddlewareFn): MiddlewareHandler; declare type MiddlewareResult = T extends MiddlewareRequestHandler ? Omit> & MiddlewareOutput : never; export declare type MiddlewareChain = [] | [MiddlewareRequestHandler] | [MiddlewareRequestHandler, MiddlewareRequestHandler] | [MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler] | [ MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler ] | [ MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler ] | [ MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler ] | [ MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler ]; export declare type MiddlewareChainOutput = Chain extends [] ? Input : Chain extends [infer A] ? MiddlewareResult : Chain extends [infer A, infer B] ? MiddlewareResult, B> : Chain extends [infer A, infer B, infer C] ? MiddlewareResult, B>, C> : Chain extends [infer A, infer B, infer C, infer D] ? MiddlewareResult, B>, C>, D> : Chain extends [infer A, infer B, infer C, infer D, infer E] ? MiddlewareResult, B>, C>, D>, E> : Chain extends [infer A, infer B, infer C, infer D, infer E, infer F] ? MiddlewareResult, B>, C>, D>, E>, F> : Chain extends [ infer A, infer B, infer C, infer D, infer E, infer F, infer G ] ? MiddlewareResult, B>, C>, D>, E>, F>, G> : never; export declare function runMiddlewareChain(input: Input, chain: Chain, req: express.Request, res: express.Response): Promise>; export declare function runMiddlewareChainIgnoringResults(input: Input, chain: Chain, req: express.Request, res: express.Response): Promise; export {}; //# sourceMappingURL=middleware.d.ts.map