/** * Config Manager - Manages MCP server configuration * * This module handles configuration loading, validation, and hot-reloading */ import { Logger } from "../types.js"; export interface ConfigSchema { server: { port?: number; timeout?: number; maxConnections?: number; enableMetrics?: boolean; }; tools: { enabledTools?: string[]; toolTimeout?: number; maxConcurrentTools?: number; cacheResults?: boolean; }; security: { enableSandbox?: boolean; allowedOrigins?: string[]; rateLimiting?: { requestsPerMinute?: number; burstLimit?: number; }; }; logging: { level?: "debug" | "info" | "warn" | "error"; enableFileLogging?: boolean; logFile?: string; }; [key: string]: unknown; } export interface ConfigManagerConfig { configPath?: string; enableHotReload?: boolean; validationStrict?: boolean; } export declare class ConfigManager { private config; private logger; private configPath; private configWatcher?; private configChangeListeners; constructor(logger: Logger, options?: ConfigManagerConfig); /** * Load configuration from file */ loadConfig(): Promise; /** * Save current configuration to file */ saveConfig(): Promise; /** * Get current configuration */ getConfig(): ConfigSchema; /** * Update configuration */ updateConfig(updates: Partial): void; /** * Get a specific configuration value */ getValue(path: string): T | undefined; /** * Set a specific configuration value */ setValue(path: string, value: unknown): void; /** * Add configuration change listener */ onConfigChange(listener: (config: ConfigSchema) => void): void; /** * Remove configuration change listener */ removeConfigChangeListener(listener: (config: ConfigSchema) => void): void; /** * Enable hot reload of configuration */ private enableHotReload; /** * Get default configuration */ private getDefaultConfig; /** * Get default configuration file path */ private getDefaultConfigPath; /** * Merge configuration with defaults */ private mergeWithDefaults; /** * Deep merge objects */ private deepMerge; /** * Validate configuration */ private validateConfig; /** * Notify listeners of configuration changes */ private notifyConfigChange; /** * Cleanup resources */ destroy(): void; } //# sourceMappingURL=config-manager.d.ts.map