import "reflect-metadata"; import { Class, IHttpRequest, IMiddleware, IRoute } from "./interfaces"; export type ActionType = 'post' | 'get' | 'put' | 'delete' | 'patch' | 'head' | 'all'; export type ParameterType = 'QUERY_NAMED' | 'QUERY_MODEL' | 'REQUEST_NAMED' | 'BODY_NAMED' | 'BODY_MODEL' | 'HEADER_NAMED' | 'COOKIE_NAMED'; export declare const METADATA_KEY: { route: symbol; parameter: symbol; middleware: symbol; }; export interface MatcherDelegate { (req: IHttpRequest): boolean; } export declare const RouteMetadataSymbol: unique symbol; export declare const MiddlewareMetadataSymbol: unique symbol; export interface RouteMetadata { path: string; middlewares: any[]; target: Class; actionType: ActionType; cachable?: { type: 'no-store' | 'no-cache' | 'private' | 'public' | 'immutable'; maxAge?: number; }; matcher: MatcherDelegate | null; } export interface ParameterMetadata { parameterName: string | symbol | undefined; index: number; type: ParameterType; parser?: (raw: any, context?: string) => any; } export interface MiddlewareMetadata { path: string; actionType: ActionType; target: Class; priority: number; } export declare class RouteReflector { static getRoutesFromMetadata(): any[]; static getRouteMetadata(constructor: Object): RouteMetadata; static getRouteParametersMetadata(constructor: Object): ParameterMetadata[]; static cleanUpMetadata(): void; static setRouteMetadata(target: Object, currentMetadata: Partial): void; static addRouteParameterMetadata(constructor: Object, metadata: ParameterMetadata): void; static setMiddlewareMeta(constructor: Object, metadata: MiddlewareMetadata): void; static getMiddlewareMeta(constructor: Object): MiddlewareMetadata; static getMiddlewaresFromMetadata(): any[]; static getRoutesMetadata(): RouteMetadata[]; static getMiddlewaresMetadata(): MiddlewareMetadata[]; }