import { KosMethodTypes, KosRequest, KosResponse } from '../services/browser-router';
/**
 * Symbol to store HTTP route metadata on the model prototype
 */
export declare const HttpRouteHandlers: unique symbol;
/**
 * Interface for HTTP route configuration
 *
 * @kosService core.http-route
 * @kosApiLevel 12
 */
export interface IHttpRouteConfig {
    method: KosMethodTypes;
    path: string;
    handler: string;
    middleware?: Array<(req: KosRequest, res: KosResponse, next: () => void) => void>;
}
/**
 * Decorator for GET endpoints
 * @param path - The route path (e.g., "/api/users/:id")
 *
 * Supports PropKeys for dynamic path segments:
 * - {MODEL_ID} - replaced with the model's ID
 * - {PROP_propertyName} - replaced with model.propertyName value
 *
 * @example Basic usage:
 * ```typescript
 * @get("/api/users/:id")
 * async getUser(req: KosRequest<"/api/users/:id">, res: KosResponse) {
 *   const userId = req.params.id;
 *   const user = await this.userService.getUser(userId);
 *   res.status(200).send(user);
 * }
 * ```
 *
 * @example With PropKeys:
 * ```typescript
 * class TenantApiModel {
 *   tenantId = "acme-corp";
 *
 *   @get("/api/tenants/{PROP_tenantId}/users")
 *   async getTenantUsers(req: KosRequest, res: KosResponse) {
 *     // Route registered as: /api/tenants/acme-corp/users
 *   }
 *
 *   @get("/api/models/{MODEL_ID}/config")
 *   async getModelConfig(req: KosRequest, res: KosResponse) {
 *     // Route registered as: /api/models/<actual-model-id>/config
 *   }
 * }
 * ```
 *
 * @kosService core.http-route
 * @kosApiLevel 12
 */
export declare const get: (path: string) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Decorator for POST endpoints
 * @param path - The route path
 *
 * @example
 * ```typescript
 * @post("/api/users")
 * async createUser(req: KosRequest<"/api/users">, res: KosResponse) {
 *   const userData = req.body;
 *   const newUser = await this.userService.createUser(userData);
 *   res.status(201).send(newUser);
 * }
 * ```
 *
 * @kosService core.http-route
 * @kosApiLevel 12
 */
export declare const post: (path: string) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Decorator for PUT endpoints
 * @param path - The route path
 *
 * @example
 * ```typescript
 * @put("/api/users/:id")
 * async updateUser(req: KosRequest<"/api/users/:id">, res: KosResponse) {
 *   const userId = req.params.id;
 *   const updates = req.body;
 *   const updatedUser = await this.userService.updateUser(userId, updates);
 *   res.status(200).send(updatedUser);
 * }
 * ```
 *
 * @kosService core.http-route
 * @kosApiLevel 12
 */
export declare const put: (path: string) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Decorator for DELETE endpoints
 * @param path - The route path
 *
 * @example
 * ```typescript
 * @del("/api/users/:id")
 * async deleteUser(req: KosRequest<"/api/users/:id">, res: KosResponse) {
 *   const userId = req.params.id;
 *   await this.userService.deleteUser(userId);
 *   res.status(204).send();
 * }
 * ```
 *
 * @kosService core.http-route
 * @kosApiLevel 12
 */
export declare const del: (path: string) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Alias for del decorator
 */
export declare const httpDelete: (path: string) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Check if a model has HTTP route handlers
 */
export declare function hasHttpRouteHandlers(model: any): boolean;
/**
 * Get HTTP route handlers from a model
 */
export declare function getHttpRouteHandlers(model: any): IHttpRouteConfig[];
//# sourceMappingURL=kos-http-decorators.d.ts.map