import { RequestHandler } from "../interface/general";
import { Router as ExpressRouter, RequestHandler as ExpressRequestHandler } from "express";
import { RouteChain } from "../interface/route-chain";
import { IRouter } from "../interface/router";
import { RouterOptions } from "express";
import { MethodList } from "../interface/method";
import { ResourcefulOptions } from "../interface/resourceful";
import { StringObject } from "../../../interface/object";
export declare class Router implements IRouter {
    private routeChain;
    private expressRouter;
    private routesNames;
    private middleware;
    private resourceHandlers;
    constructor(options?: RouterOptions);
    getNames: () => StringObject;
    get(path: string, ...handlers: RequestHandler[]): RouteChain;
    post(path: string, ...handlers: RequestHandler[]): RouteChain;
    put(path: string, ...handlers: RequestHandler[]): RouteChain;
    delete(path: string, ...handlers: RequestHandler[]): RouteChain;
    patch(path: string, ...handlers: RequestHandler[]): RouteChain;
    options(path: string, ...handlers: RequestHandler[]): RouteChain;
    head(path: string, ...handlers: RequestHandler[]): RouteChain;
    resource(path: string, controller: any, option?: ResourcefulOptions): RouteChain;
    restfulResource(path: string, controller: any, option?: ResourcefulOptions): RouteChain;
    apiResource(path: string, controller: any, option?: ResourcefulOptions): RouteChain;
    resources(resources: {
        [route: string]: any;
    }, options: ResourcefulOptions): RouteChain;
    restfulResources(resources: {
        [route: string]: any;
    }, options: ResourcefulOptions): RouteChain;
    apiResources(resources: {
        [route: string]: any;
    }, options: ResourcefulOptions): RouteChain;
    view(path: string, view: string, data?: object): RouteChain;
    toExpressRoutes(): ExpressRouter;
    addExpressRoute(method: MethodList, path: string, ...handlers: ExpressRequestHandler[]): void;
    private addRoute;
    private getRoutes;
    private addMethod;
    use(pathOrHandler: string | RequestHandler | Router | IRouter, ...handlers: RequestHandler[] | Router[] | IRouter[]): RouteChain;
    all(path: string, ...handlers: RequestHandler[]): RouteChain;
    protected processUse(pathOrHandler: string | RequestHandler | Router | IRouter, ...handlers: RequestHandler[] | Router[] | IRouter[]): RouteChain;
}
