import 'reflect-metadata';
import type { ControllerCrudOptions, RouteMiddleware } from '../../typings/routing/crud';
import type { ControllerMeta, ControllerRouteMeta, ControllerSide, HttpMethod, RouteParamMeta, RouteParamSource } from '../../typings/routing/meta';
export type { ControllerMeta, ControllerRouteMeta, ControllerSide, HttpMethod, RouteParamMeta, RouteParamSource, };
export declare function registerController(meta: ControllerMeta): void;
export declare function listControllers(side?: ControllerSide): ControllerMeta[];
/** 同进程 restart 前清空，避免装饰器未重跑时残留旧清单 */
export declare function clearControllers(): void;
export declare function appendRouteParam(token: new (...args: unknown[]) => unknown, handler: string, param: RouteParamMeta): void;
export declare function getRouteParams(token: new (...args: unknown[]) => unknown, handler: string): RouteParamMeta[];
export declare function clearRouteParams(token: new (...args: unknown[]) => unknown): void;
export declare function markRoutePublic(token: new (...args: unknown[]) => unknown, handler: string): void;
export declare function isRoutePublic(token: new (...args: unknown[]) => unknown, handler: string): boolean;
export declare function clearRoutePublic(token: new (...args: unknown[]) => unknown): void;
export declare function appendRouteMiddleware(token: new (...args: unknown[]) => unknown, handler: string, middleware: RouteMiddleware[]): void;
export declare function getRouteMiddleware(token: new (...args: unknown[]) => unknown, handler: string): RouteMiddleware[];
export declare function clearRouteMiddleware(token: new (...args: unknown[]) => unknown): void;
export declare function setRoutePerms(token: new (...args: unknown[]) => unknown, handler: string, perms: string[]): void;
export declare function getRoutePerms(token: new (...args: unknown[]) => unknown, handler: string): string[] | undefined;
export declare function clearRoutePerms(token: new (...args: unknown[]) => unknown): void;
export declare function markRouteIgnorePerms(token: new (...args: unknown[]) => unknown, handler: string): void;
export declare function isRouteIgnorePerms(token: new (...args: unknown[]) => unknown, handler: string): boolean;
export declare function clearRouteIgnorePerms(token: new (...args: unknown[]) => unknown): void;
export declare function schemaFromParams(params: RouteParamMeta[]): {
    body?: unknown;
    query?: unknown;
    params?: unknown;
} | undefined;
/** @internal 供装饰器写入 CRUD 选项时使用 */
export type { ControllerCrudOptions, RouteMiddleware };
