import { InjectorService } from "@tsed/di";
import { PlatformMulter, PlatformMulterSettings, PlatformStaticsOptions } from "../../config";
import { PathParamsType } from "../../mvc/interfaces/PathParamsType";
import { PlatformRouteOptions, PlatformRouteWithoutHandlers } from "../interfaces/PlatformRouterMethods";
import { PlatformHandler } from "./PlatformHandler";
/**
 * @ignore
 */
export declare const PLATFORM_ROUTER_OPTIONS: unique symbol;
declare global {
    namespace TsED {
        interface Router {
        }
    }
}
/**
 * Platform Router abstraction layer.
 * @platform
 */
export declare class PlatformRouter<Router = TsED.Router> {
    protected platformHandler: PlatformHandler;
    rawRouter: Router;
    raw: any;
    injector: InjectorService;
    constructor(platformHandler: PlatformHandler);
    /**
     * Create a new instance of PlatformRouter
     * @param injector
     * @param routerOptions
     */
    static create(injector: InjectorService, routerOptions?: any): PlatformRouter<TsED.Router>;
    protected static createRawRouter(): any;
    callback(): any;
    getRouter(): Router;
    use(...handlers: any[]): this;
    addRoute(options: PlatformRouteOptions): this;
    all(path: PathParamsType, ...handlers: any[]): this;
    get(path: PathParamsType, ...handlers: any[]): this;
    post(path: PathParamsType, ...handlers: any[]): this;
    put(path: PathParamsType, ...handlers: any[]): this;
    delete(path: PathParamsType, ...handlers: any[]): this;
    patch(path: PathParamsType, ...handlers: any[]): this;
    head(path: PathParamsType, ...handlers: any[]): this;
    options(path: PathParamsType, ...handlers: any[]): this;
    statics(path: string, options: PlatformStaticsOptions): this;
    multer(options: PlatformMulterSettings): PlatformMulter;
    protected mapHandlers(handlers: any[], options?: PlatformRouteWithoutHandlers): any[];
}
