import { Type, Provider, IParameter } from '@tsdi/ioc';
import { IContext } from '../IContext';
import { RequestMethod } from '../RequestMethod';
import { RouteMetadata, CorsMetadata } from '../metadata';
import { MiddlewareType } from '../middlewares/IMiddleware';
import { MvcRoute } from './Route';
export declare function isBuffer(target: any): boolean;
export declare const RouteControllerArgToken: import("@tsdi/ioc").TokenId<Type<any>>;
export declare const RouteControllerMiddlewaresToken: import("@tsdi/ioc").TokenId<any[]>;
export declare class ControllerRoute extends MvcRoute {
    private controller;
    private middlewares;
    constructor(url: string, controller: Type, middlewares: MiddlewareType[]);
    navigate(ctx: IContext, next: () => Promise<void>): Promise<void>;
    navigating(ctx: IContext, next: () => Promise<void>): Promise<void>;
    protected getRouteMiddleware(ctx: IContext, meta: RouteMetadata): MiddlewareType[];
    options(ctx: IContext, next: () => Promise<void>): Promise<void>;
    protected getCorsMeta(ctx: IContext, reqMethod: string): CorsMetadata;
    invoke(ctx: IContext, meta: RouteMetadata): Promise<void>;
    protected createProvider(ctx: IContext, ctrl: any, meta: RouteMetadata, params: IParameter[]): Promise<Provider[]>;
    protected isRestUri(uri: string): boolean;
    protected getRouteMetaData(ctx: IContext, requestMethod: RequestMethod): RouteMetadata;
    static ρAnn(): any;
}
