import { Middleware, IRequest, RequestMethod, IResponse, ILayer, IController, RouteHandler, ContextResolver } from './types'; import Router from './router'; export default class Layer, TResponse extends IResponse, TContext> implements ILayer { private readonly router; private readonly previous; private readonly _middleware; private contextResolver; constructor(router: Router, previous: Layer, _middleware: Middleware, contextResolver: ContextResolver); chain(handler: RouteHandler): RouteHandler, IResponse, void>; register(template: string, handler: RouteHandler, method: RequestMethod): void; context(resolver: ContextResolver): Layer; middleware = TRequest, MResponse extends IResponse = TResponse>(middleware: Middleware): Layer; route(template: string, method?: RequestMethod): IController; }