import { UnknownObject, Middleware, LazyMiddlewareFactory, BranchMiddlewareCondition, CaughtMiddlewareHandler } from './types'; /** * A simple middleware compose builder */ export declare class Composer { protected middlewares: Middleware[]; /** * Invokes a new instance of the Composer class */ static builder(): Composer; /** * The number of middleware installed in Composer */ get length(): number; /** * Clones a composer object */ clone(): Composer; /** * Adds middleware to the chain */ use(middleware: Middleware): Composer; /** * Lazily asynchronously gets middleware */ lazy(factory: LazyMiddlewareFactory): Composer; /** * Runs the middleware and force call `next()` */ tap(middleware: Middleware): Composer; /** * Runs the middleware at the next event loop and force call `next()` */ fork(middleware: Middleware): Composer; /** * By condition splits the middleware */ branch(condition: BranchMiddlewareCondition, trueMiddleware: Middleware, falseMiddleware: Middleware): Composer; /** * Conditionally runs optional middleware or skips middleware */ optional(condition: BranchMiddlewareCondition, optionalMiddleware: Middleware): Composer; /** * Conditionally runs middleware or stops the chain */ filter(condition: BranchMiddlewareCondition, filterMiddleware: Middleware): Composer; /** * Runs the second middleware before the main */ before(beforeMiddleware: Middleware, middleware: Middleware): Composer; /** * Runs the second middleware after the main */ after(middleware: Middleware, afterMiddleware: Middleware): Composer; /** * Runs middleware before and after the main */ enforce(beforeMiddleware: Middleware, middleware: Middleware, afterMiddleware: Middleware): Composer; /** * Catches errors in the middleware chain */ caught(errorHandler: CaughtMiddlewareHandler): Composer; /** * Concurrently launches middleware, * the chain will continue if `next()` is called in all middlewares */ concurrency(middlewares: Middleware[]): Composer; /** * Compose middleware handlers into a single handler */ compose(): Middleware; }