/** * Main SmartServe server class * Cross-platform HTTP server with decorator-based routing */ import type { ISmartServeOptions, ISmartServeInstance, IWebSocketPeer } from './smartserve.interfaces.js'; import { type TRequestHandler } from '../adapters/index.js'; /** * SmartServe - Cross-platform HTTP server * * @example * ```typescript * const server = new SmartServe({ port: 3000 }); * * // Register decorated controllers * server.register(UserController); * server.register(ProductController); * * await server.start(); * ``` */ export declare class SmartServe { private options; private adapter; private instance; private customHandler; private fileServer; private webdavHandler; private compressionConfig; /** WebSocket connection registry (only active when typedRouter is set) */ private wsConnections; /** Cleanup functions for dynamic routes registered by this SmartServe instance. */ private routeCleanupFunctions; constructor(options: ISmartServeOptions); /** * Register a controller class or instance */ register(controllerOrInstance: Function | object): this; /** * Set a custom request handler (bypasses decorator routing) */ setHandler(handler: TRequestHandler): this; /** * Start the server */ start(): Promise; /** * Stop the server */ stop(): Promise; /** * Get server instance (if running) */ getInstance(): ISmartServeInstance | null; /** * Check if server is running */ isRunning(): boolean; /** * Get all active WebSocket connections * Only available when typedRouter is configured */ getWebSocketConnections(): IWebSocketPeer[]; /** * Get WebSocket connections filtered by tag * Only available when typedRouter is configured */ getWebSocketConnectionsByTag(tag: string): IWebSocketPeer[]; /** * Broadcast message to all WebSocket connections * Only available when typedRouter is configured */ broadcastWebSocket(data: string | object): void; /** * Broadcast message to WebSocket connections with specific tag * Only available when typedRouter is configured */ broadcastWebSocketByTag(tag: string, data: string | object): void; /** * Setup OpenAPI documentation endpoints */ private setupOpenApi; private cleanupDynamicRoutes; /** * Create the main request handler */ private createRequestHandler; /** * Create request context from Request object. * Body is NOT parsed here - use ctx.json(), ctx.text(), etc. for lazy parsing. */ private createContext; /** * Execute route with interceptor chain */ private executeRoute; /** * Convert handler result to Response */ private resultToResponse; /** * Apply compression to response if applicable */ private applyCompression; /** * Handle errors */ private handleError; }