import { RequestHandler } from "express";
import "reflect-metadata";
export declare const CONTROLLER_META_KEY = "controller:base-path";
export declare const ROUTES_META_KEY = "controller:routes";
export declare const MIDDLEWARE_META_KEY = "controller:middleware";
/**
 * Controller decorator - marks a class as a controller
 * @param basePath Base path for all routes in this controller
 */
export declare function Controller(basePath: string): (target: any) => any;
/**
 * Route decorator - marks a method as a route handler
 * @param path Route path
 * @param method HTTP method
 */
export declare function Route(path: string, method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH"): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * GET route decorator
 * @param path Route path
 */
export declare function Get(path: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * POST route decorator
 * @param path Route path
 */
export declare function Post(path: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * PUT route decorator
 * @param path Route path
 */
export declare function Put(path: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * DELETE route decorator
 * @param path Route path
 */
export declare function Delete(path: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * PATCH route decorator
 * @param path Route path
 */
export declare function Patch(path: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Middleware decorator - adds middleware to a route handler
 * @param middleware Middleware function(s)
 */
export declare function Use(...middleware: RequestHandler[]): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
