import { ExecutionContextHost } from './execution-context-host';
import { HandlerTransform } from "../contracts";
import { ParamData } from "../decorators";
import { ContextType, ControllerType } from "../types";
export interface ParamProperties<T = any, IExtractor extends Function = any> {
    index: number;
    type: T | string;
    data: ParamData;
    handlers: HandlerTransform[];
    extractValue: IExtractor;
}
export declare class ContextUtils {
    mapParamType(key: string): string;
    reflectCallbackParamTypes(instance: ControllerType, methodName: string): any[];
    reflectCallbackMetadata<T = any>(instance: ControllerType, methodName: string, metadataKey: string): T;
    reflectPassThrough(instance: ControllerType, methodName: string): boolean;
    getArgumentsLength<T>(keys: string[], metadata: T): number;
    createNullArray(length: number): any[];
    mergeParamsMetaTypes(paramsProperties: ParamProperties[], paramTypes: any[]): (ParamProperties & {
        metaType?: any;
    })[];
    getCustomFactory(factory: (...args: unknown[]) => void, data: unknown, contextFactory: (args: unknown[]) => ExecutionContextHost): (...args: unknown[]) => unknown;
    getContextFactory<T extends string = ContextType>(contextType: T, instance?: object, callback?: Function): (args: unknown[]) => ExecutionContextHost;
}
//# sourceMappingURL=context-utils.d.ts.map