import 'reflect-metadata';
import type { RouteMiddleware } from '../../typings/routing/crud';
import type { ControllerOptions } from '../../typings/routing/meta';
/**
 * 注册控制器（自动进 IoC，无需 `@Provide`）。
 *
 * @param prefixOrOptions - `'/auth'` 显式前缀；省略则按规则：/{module}/{文件名}
 */
export declare function Controller(prefixOrOptions?: string | ControllerOptions): (target: new (...args: unknown[]) => unknown) => void;
/**
 * 单路由中间件（Elysia beforeHandle）
 *
 * @example
 * ```ts
 * @Use(rateLimit)
 * @Post('/once')
 * once() {}
 * ```
 */
export declare function Use(...middleware: RouteMiddleware[]): (target: object, propertyKey: string | symbol) => void;
/** 公开路由：admin 侧跳过鉴权宏 */
export declare function Public(): (target: object, propertyKey: string | symbol) => void;
/**
 * 显式权限码（可选覆盖自动推导）；超管跳过。
 * 业务侧优先在菜单配置权限码，一般无需使用。
 */
export declare function Perms(...codes: string[]): (target: object, propertyKey: string | symbol) => void;
/** 跳过权限码校验（仍走登录，除非同时 @Public） */
export declare function IgnorePerms(): (target: object, propertyKey: string | symbol) => void;
export declare const Body: (schema?: unknown) => (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
export declare const Query: (schema?: unknown) => (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
export declare const Param: (schema?: unknown) => (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
/** @example `@Get('/perms', { summary: '当前权限' })` → 侧栏显示 `perms 当前权限` */
export declare const Get: (path?: string, options?: {
    summary?: string;
}) => (target: object, propertyKey: string | symbol) => void;
export declare const Post: (path?: string, options?: {
    summary?: string;
}) => (target: object, propertyKey: string | symbol) => void;
export declare const Put: (path?: string, options?: {
    summary?: string;
}) => (target: object, propertyKey: string | symbol) => void;
export declare const Delete: (path?: string, options?: {
    summary?: string;
}) => (target: object, propertyKey: string | symbol) => void;
export declare const Patch: (path?: string, options?: {
    summary?: string;
}) => (target: object, propertyKey: string | symbol) => void;
