import { HTTPParamType } from '@eggjs/tegg-types';
import type { HTTPMethodEnum, MethodMeta, MiddlewareFunc } from '@eggjs/tegg-types';
export declare abstract class ParamMeta {
    type: HTTPParamType;
    abstract validate(httpPath: string): any;
}
export declare class RequestParamMeta extends ParamMeta {
    type: HTTPParamType;
    validate(): void;
}
export declare class BodyParamMeta extends ParamMeta {
    type: HTTPParamType;
    validate(): void;
}
export declare class HeadersParamMeta extends ParamMeta {
    type: HTTPParamType;
    validate(): void;
}
export declare class QueryParamMeta extends ParamMeta {
    type: HTTPParamType;
    name: string;
    constructor(name: string);
    validate(): void;
}
export declare class QueriesParamMeta extends ParamMeta {
    type: HTTPParamType;
    name: string;
    constructor(name: string);
    validate(): void;
}
export declare class PathParamMeta extends ParamMeta {
    type: HTTPParamType;
    name: string;
    constructor(name: string);
    validate(httpPath: string): void;
}
export declare class CookiesParamMeta extends ParamMeta {
    type: HTTPParamType;
    validate(): void;
}
export declare class HTTPMethodMeta implements MethodMeta {
    readonly name: string;
    readonly path: string;
    readonly method: HTTPMethodEnum;
    readonly middlewares: readonly MiddlewareFunc[];
    readonly contextParamIndex: number | undefined;
    readonly paramMap: Map<number, ParamMeta>;
    readonly priority: number;
    readonly needAcl: boolean;
    readonly aclCode: string | undefined;
    readonly hosts: string[] | undefined;
    readonly timeout: number | undefined;
    constructor(name: string, path: string, method: HTTPMethodEnum, middlewares: MiddlewareFunc[], contextParamIndex: number | undefined, paramTypeMap: Map<number, ParamMeta>, priority: number, needAcl: boolean, aclCode: string | undefined, hosts: string[] | undefined, timeout: number | undefined);
}
export declare class ParamMetaUtil {
    static createParam(type: HTTPParamType, name?: string): RequestParamMeta | BodyParamMeta | HeadersParamMeta | QueryParamMeta | QueriesParamMeta | PathParamMeta | CookiesParamMeta;
}
