import { ControllerMetadataArgs } from './args/ControllerMetadataArgs.js';
import { ActionMetadataArgs } from './args/ActionMetadataArgs.js';
import { MiddlewareMetadataArgs } from './args/MiddlewareMetadataArgs.js';
import { ResponseHandlerMetadataArgs } from './args/ResponseHandleMetadataArgs.js';
import { ParamMetadataArgs } from './args/ParamMetadataArgs.js';
import { ParamConstructorMetadataArgs } from './args/ParamConstructorMetadataArgs.js';
import { UseMetadataArgs } from './args/UseMetadataArgs.js';
/**
 * Gets metadata args storage.
 * Metadata args storage follows the best practices and stores metadata in a global variable.
 */
export declare function getMetadataArgsStorage(): MetadataArgsStorage;
export declare class MetadataArgsStorage {
    /**
     * Registered controller metadata args.
     */
    controllers: ControllerMetadataArgs[];
    /**
     * Registered middleware metadata args.
     */
    middlewares: MiddlewareMetadataArgs[];
    /**
     * Registered action metadata args.
     */
    actions: ActionMetadataArgs[];
    /**
     * Registered param metadata args.
     */
    params: ParamMetadataArgs[];
    /**
     * Registered constructor param metadata args.
     */
    paramsConstructor: ParamConstructorMetadataArgs[];
    /**
     * Registered response handler metadata args.
     */
    responseHandlers: ResponseHandlerMetadataArgs[];
    /**
     * Registered "use middleware" metadata args.
     */
    uses: UseMetadataArgs[];
    /**
     * Filters registered controllers by a given classes.
     */
    filterControllerMetadataForClasses(classes: Function[]): ControllerMetadataArgs[];
    /**
     * Filters registered actions by a given classes.
     */
    filterActionsWithTarget(target: Function): ActionMetadataArgs[];
    /**
     * Filters response handlers by a given classes.
     */
    filterResponseHandlersWithTargetAndMethod(target: Function, methodName: string): ResponseHandlerMetadataArgs[];
    /**
     * Filters constructor parameters by a given classes.
     */
    filterParamsConstructorWithTargetAndMethod(methodName: string): ParamConstructorMetadataArgs[];
    /**
     * Filters parameters by a given classes.
     */
    filterParamsWithTargetAndMethod(target: Function, methodName: string): ParamMetadataArgs[];
    /**
     * Filters response handlers by a given class.
     */
    filterResponseHandlersWithTarget(target: Function): ResponseHandlerMetadataArgs[];
    /**
     * Filters registered "use middlewares" by a given target class and method name.
     */
    filterUsesWithTargetAndMethod(target: Function, methodName: string): UseMetadataArgs[];
    /**
     * Filters registered middlewares by a given classes.
     */
    filterMiddlewareMetadatasForClasses(classes: Function[]): MiddlewareMetadataArgs[];
}
