import { ControllerMetadata } from '../metadata/ControllerMetadata.js';
import { MiddlewareMetadata } from '../metadata/MiddlewareMetadata.js';
import { ActionMetadata } from '../metadata/ActionMetadata.js';
import { ResponseHandlerMetadata } from '../metadata/ResponseHandleMetadata.js';
import { ParamMetadata } from '../metadata/ParamMetadata.js';
import { ParamConstructorMetadata } from '../metadata/ParamConstructorMetadata.js';
import { UseMetadata } from '../metadata/UseMetadata.js';
import { TypeNexusOptions } from '../DriverOptions.js';
/**
 * Builds metadata from the given metadata arguments.
 */
export declare class MetadataBuilder {
    private options;
    constructor(options: TypeNexusOptions);
    /**
     * Builds controller metadata from a registered controller metadata args.
     */
    buildControllerMetadata(classes?: Function[]): ControllerMetadata[];
    /**
     * Builds middleware metadata from a registered middleware metadata args.
     */
    buildMiddlewareMetadata(classes?: Function[]): MiddlewareMetadata[];
    /**
     * Creates middleware metadatas.
     */
    protected createMiddlewares(classes?: Function[]): MiddlewareMetadata[];
    /**
     * Creates controller metadatas.
     */
    protected createControllers(classes?: Function[]): ControllerMetadata[];
    /**
     * Creates action metadata.
     */
    protected createActions(controller: ControllerMetadata): ActionMetadata[];
    /**
     * Creates constructor param metadatas.
     */
    protected createParamsConstructor(action: ActionMetadata): ParamConstructorMetadata[];
    /**
     * Creates param metadatas.
     */
    protected createParams(action: ActionMetadata): ParamMetadata[];
    /**
     * Creates response handler metadatas for action.
     */
    protected createActionResponseHandlers(action: ActionMetadata): ResponseHandlerMetadata[];
    /**
     * Creates use metadatas for actions.
     */
    protected createActionUses(action: ActionMetadata): UseMetadata[];
    /**
     * Creates response handler metadatas for controller.
     */
    protected createControllerResponseHandlers(controller: ControllerMetadata): ResponseHandlerMetadata[];
    /**
     * Creates use metadatas for controllers.
     */
    protected createControllerUses(controller: ControllerMetadata): UseMetadata[];
}
