import { ModuleSystemMetrics } from './metrics';
import { CircuitBreakerManager } from './circuit-breaker';
import { LogLevel } from './logger';
export interface RuntimeConfig {
    maxCacheSize: number;
    maxCacheMemory: number;
    circularDependencyStrategy: 'error' | 'warn' | 'ignore';
    enableTracing: boolean;
    logLevel: LogLevel;
    enableMetrics: boolean;
    circuitBreakerEnabled: boolean;
    failureThreshold: number;
    recoveryTimeout: number;
    healthCheckInterval: number;
    enableHealthEndpoint: boolean;
    enableMetricsEndpoint: boolean;
    managementPort: number;
}
export interface HealthEndpointResponse {
    status: 'healthy' | 'degraded' | 'unhealthy';
    timestamp: string;
    uptime: number;
    version: string;
    checks: {
        name: string;
        status: 'pass' | 'fail' | 'warn';
        message: string;
        duration: number;
    }[];
    details?: {
        circuitBreakers?: Record<string, unknown>;
        cache?: {
            size: number;
            memoryUsage: number;
            hitRate: number;
        };
    };
}
/**
 * Dynamic configuration manager
 */
export declare class RuntimeConfigManager {
    private config;
    private readonly configChangeCallbacks;
    constructor(initialConfig?: Partial<RuntimeConfig>);
    /**
     * Get current configuration
     */
    getConfig(): RuntimeConfig;
    /**
     * Update a configuration value
     */
    updateConfig<K extends keyof RuntimeConfig>(key: K, value: RuntimeConfig[K]): void;
    /**
     * Update multiple configuration values
     */
    updateMultiple(updates: Partial<RuntimeConfig>): void;
    /**
     * Register callback for configuration changes
     */
    onConfigChange<K extends keyof RuntimeConfig>(key: K, callback: (_newValue: RuntimeConfig[K], _oldValue: RuntimeConfig[K]) => void): void;
    /**
     * Validate configuration values
     */
    validateConfig(): {
        valid: boolean;
        errors: string[];
    };
    /**
     * Reset to default configuration
     */
    reset(): void;
}
/**
 * HTTP management server for health checks and metrics
 */
export declare class ManagementServer {
    private server?;
    private readonly metrics;
    private readonly circuitBreakers;
    private readonly configManager;
    private readonly logger;
    constructor(metrics: ModuleSystemMetrics, circuitBreakers: CircuitBreakerManager, configManager: RuntimeConfigManager);
    /**
     * Start the management server
     */
    start(port: number): Promise<number>;
    /**
     * Stop the management server
     */
    stop(): Promise<void>;
    private handleRequest;
    private handleHealthCheck;
    private handleReadinessCheck;
    private handleMetrics;
    private handleConfig;
    private handleCircuitBreakers;
    private handleReset;
    private handleNotFound;
    private sendJsonResponse;
    private sendErrorResponse;
    private readRequestBody;
}
//# sourceMappingURL=runtime-config.d.ts.map