///
import * as Koa from 'koa';
import { ClassConstructor } from '@t2ee/core';
import AfterMiddleware from './core/AfterMiddleware';
import BeforeMiddleware from './core/BeforeMiddleware';
import AfterAllMiddleware from './core/AfterAllMiddleware';
import Request from './core/Request';
declare class Router {
private controllers;
private afters;
private befores;
private afterAlls;
private contextedVariables;
constructor();
private errorHandler;
private notFoundHandler;
private routerConfig;
private findMatched(url, method);
private shouldErrorHandlerHandleError(error);
routes(): (context: Koa.Context, next: () => Promise) => any;
private useMiddlewares(befores, afters?, afterAlls?);
use(befores: BeforeMiddleware[], afters?: AfterMiddleware[], afterAlls?: AfterAllMiddleware[]): void;
use(klass: ClassConstructor, befores?: BeforeMiddleware[], afters?: AfterMiddleware[], afterAlls?: AfterAllMiddleware[]): void;
static newInstance(): Router;
provideContext(klass: ClassConstructor, func: (req: Request) => T): Router;
}
export default Router;