/**
 * Model Configuration Loader
 * Loads and merges model configurations from multiple sources with proper precedence
 *
 * @implements @.aiwg/architecture/ADR-015-enhanced-model-selection.md
 * @architecture @.aiwg/architecture/enhanced-model-selection-design.md
 */
import type { ModelConfigV1, UserProjectConfig, MergedModelConfig, ProviderDefinition } from './types.js';
/**
 * Configuration file locations
 */
export interface ConfigLocations {
    aiwgDefault: string;
    userConfig: string;
    projectConfig: string;
}
/**
 * Loads and merges model configurations
 */
export declare class ConfigLoader {
    private cache;
    private readonly locations;
    constructor(projectPath?: string);
    /**
     * Load and merge all configurations
     * Precedence: project > user > AIWG default
     */
    load(): Promise<MergedModelConfig>;
    /**
     * Load AIWG default configuration
     */
    private loadAiwgDefault;
    /**
     * Load user configuration (optional)
     */
    private loadUserConfig;
    /**
     * Load project configuration (optional)
     */
    private loadProjectConfig;
    /**
     * Merge configurations with proper precedence
     */
    private merge;
    /**
     * Deep clone providers to avoid mutation
     */
    private deepCloneProviders;
    /**
     * Load v1 config for backwards compatibility
     */
    loadV1Config(path: string): Promise<ModelConfigV1 | null>;
    /**
     * Convert v1 config to v2 compatible structure
     */
    convertV1ToV2(_v1Config: ModelConfigV1): UserProjectConfig;
    /**
     * Resolve provider inheritance
     */
    resolveProviderInheritance(provider: ProviderDefinition, providers: {
        [provider: string]: ProviderDefinition;
    }): ProviderDefinition;
    /**
     * Clear cache (useful for testing)
     */
    clearCache(): void;
    /**
     * Get configuration file locations
     */
    getLocations(): ConfigLocations;
}
//# sourceMappingURL=config-loader.d.ts.map