import { Type } from "@tsed/core";
import { JsonEntityStore, JsonEntityStoreOptions, JsonParameter } from "@tsed/schema";
import { ParamTypes } from "./ParamTypes";
export interface ParamConstructorOptions extends JsonEntityStoreOptions {
    expression?: string;
    useType?: Type<any>;
    paramType?: string | ParamTypes;
    pipes?: Type<IPipe>[];
}
export interface IPipe<T = any, R = any> {
    transform(value: T, metadata: ParamMetadata): R;
}
export declare class ParamMetadata extends JsonEntityStore implements ParamConstructorOptions {
    /**
     *
     */
    expression: string;
    /**
     *
     */
    paramType: string | ParamTypes;
    pipes: Type<IPipe>[];
    constructor(options: ParamConstructorOptions);
    /**
     * Return the JsonOperation
     */
    get parameter(): JsonParameter;
    get service(): string | ParamTypes;
    set service(service: string | ParamTypes);
    static get(target: Type<any>, propertyKey: string | symbol, index: number): ParamMetadata;
    static getParams(target: Type<any>, propertyKey: string | symbol): ParamMetadata[];
}
