import type { Method } from '@stackpress/lib/types'; import type Router from './Router.js'; import type { ControllerEventDefinition, ControllerHandler, ControllerMetadata, ControllerMountable, ControllerRouteDefinition } from './types.js'; export declare function metadataOf(target: Function): ControllerMetadata; export declare function hasRoute(metadata: ControllerMetadata, definition: ControllerRouteDefinition): boolean; export declare function hasEvent(metadata: ControllerMetadata, definition: ControllerEventDefinition): boolean; export declare function addRoute(target: Function, definition: ControllerRouteDefinition): void; export declare function addEvent(target: Function, definition: ControllerEventDefinition): void; export declare function normalizePath(...parts: string[]): string; export declare function routeDecorator(method: Method | 'ALL'): (path: string, priority?: number) => MethodDecorator; export declare function assertHandler(controller: object, property: string | symbol): ControllerHandler; export declare function controllerOf(mountable: ControllerMountable): object; export declare function registerRoute = Router>(router: X, controller: object, basePath: string, route: ControllerRouteDefinition): void; export declare function registerEvent = Router>(router: X, controller: object, event: ControllerEventDefinition): void; export declare function Controller(basePath?: string): ClassDecorator; export declare function All(path: string, priority?: number): MethodDecorator; export declare function Connect(path: string, priority?: number): MethodDecorator; export declare function Delete(path: string, priority?: number): MethodDecorator; export declare function Get(path: string, priority?: number): MethodDecorator; export declare function Head(path: string, priority?: number): MethodDecorator; export declare function On(event: string | RegExp, priority?: number): MethodDecorator; export declare function Options(path: string, priority?: number): MethodDecorator; export declare function Patch(path: string, priority?: number): MethodDecorator; export declare function Post(path: string, priority?: number): MethodDecorator; export declare function Put(path: string, priority?: number): MethodDecorator; export declare function Trace(path: string, priority?: number): MethodDecorator; export declare function mount = Router>(router: X, ...controllers: ControllerMountable[]): X;