/** * Layered Configuration System - Hierarchical configuration management * * This module implements a layered configuration system with: * - Global defaults * - User-specific settings * - Runtime overrides * - Environment-specific configurations */ import { Logger } from "../types.js"; export interface ConfigLayer { name: string; priority: number; source: string; config: Record; loaded: boolean; lastModified?: Date; } export interface LayeredConfigOptions { configDir?: string; enableEnvironmentOverrides?: boolean; enableRuntimeOverrides?: boolean; configFileName?: string; userConfigFileName?: string; environmentConfigFileName?: string; } export declare class LayeredConfigManager { private layers; private logger; private options; private mergedConfig; private configWatchers; constructor(logger: Logger, options?: LayeredConfigOptions); /** * Load all configuration layers */ loadAllLayers(): Promise>; /** * Get merged configuration */ getConfig(): Record; /** * Get configuration value with dot notation */ getValue(path: string): T | undefined; /** * Set configuration value with dot notation */ setValue(path: string, value: unknown): void; /** * Override configuration at runtime */ setRuntimeOverride(path: string, value: unknown): void; /** * Clear runtime overrides */ clearRuntimeOverrides(): void; /** * Reload a specific layer */ reloadLayer(layerName: string): Promise; /** * Enable file watching for a layer */ enableFileWatching(layerName: string): void; /** * Get layer information */ getLayerInfo(): Array<{ name: string; priority: number; source: string; loaded: boolean; lastModified?: Date; configKeys: string[]; }>; /** * Initialize configuration layers */ private initializeLayers; /** * Load a specific configuration layer */ private loadLayer; /** * Load configuration from file */ private loadConfigFromFile; /** * Load environment variables */ private loadEnvironmentVariables; /** * Parse environment variable value */ private parseEnvironmentValue; /** * Merge all configuration layers */ private mergeLayers; /** * Deep merge objects */ private deepMerge; /** * Set nested value using dot notation */ private setNestedValue; /** * Watch configuration file for changes */ private watchConfigFile; /** * Get default configuration directory */ private getDefaultConfigDir; /** * Get default configuration */ private getDefaultConfiguration; /** * Cleanup resources */ destroy(): void; } //# sourceMappingURL=layered-config.d.ts.map