/**
 * Config Loader Facade
 *
 * Single import path for all config loading operations.
 * Re-exports read-only functions from unified-config-loader and config-manager,
 * and provides cache-coherent write wrappers that keep the memoization cache in sync.
 *
 * IMPORTANT:
 * - Raw write functions (saveUnifiedConfig, mutateUnifiedConfig,
 *   updateUnifiedConfig) are NOT re-exported here. Use the cache-coherent
 *   wrappers (saveConfig, mutateConfig, updateConfig) instead.
 * - `loadOrCreateUnifiedConfig` and `loadUnifiedConfig` are re-exported as
 *   uncached reads. If you need cached reads, use `getCachedConfig()`.
 *   If you use an uncached read followed by a write outside this facade,
 *   call `invalidateConfigCache()` to keep the cache coherent.
 *
 * Usage:
 *   import { getCachedConfig, saveConfig, mutateConfig } from '../config/config-loader-facade';
 *   import { getCcsDir, loadSettings } from '../config/config-loader-facade';
 */
export { loadUnifiedConfig, loadOrCreateUnifiedConfig, getConfigYamlPath, getConfigJsonPath, hasUnifiedConfig, hasLegacyConfig, getConfigFormat, isUnifiedMode, getDefaultProfile, setDefaultProfile, getWebSearchConfig, getGlobalEnvConfig, getContinuityInheritanceMap, getCliproxySafetyConfig, getThinkingConfig, getOfficialChannelsConfig, isDashboardAuthEnabled, getDashboardAuthConfig, getBrowserConfig, getImageAnalysisConfig, getLoggingConfig, getCursorConfig, } from './unified-config-loader';
export type { GeminiWebSearchInfo } from './unified-config-loader';
export { loadSettings, loadConfigSafe, readConfig, getCcsDir } from '../utils/config-manager';
import type { UnifiedConfig } from './unified-config-types';
/**
 * Get the unified config with in-memory caching.
 * Checks file mtime on each call — if the config file was modified
 * externally (e.g. by code importing unified-config-loader directly),
 * the cache is automatically invalidated and re-read from disk.
 */
export declare function getCachedConfig(): UnifiedConfig;
/**
 * Clear the memoization cache.
 * The next call to getCachedConfig() will re-read from disk.
 */
export declare function invalidateConfigCache(): void;
/**
 * Save config to disk and update the cache.
 * Stores a deep copy to break the reference alias.
 */
export declare function saveConfig(config: UnifiedConfig): void;
/**
 * Atomically mutate config (read-modify-write with lock) and invalidate cache.
 * Invalidated AFTER _mutateUnifiedConfig returns — if that throws, cache stays valid.
 */
export declare function mutateConfig(mutator: (config: UnifiedConfig) => void): UnifiedConfig;
/**
 * Partial-update config and invalidate cache.
 * Shorthand for mutateConfig with Object.assign.
 */
export declare function updateConfig(updates: Partial<UnifiedConfig>): UnifiedConfig;
/**
 * Get the current cache state (for diagnostics/testing).
 * Returns true if a cached config exists, false otherwise.
 */
export declare function hasCachedConfig(): boolean;
//# sourceMappingURL=config-loader-facade.d.ts.map