/**
 * Model Configuration System
 *
 * Replaces hardcoded model-specific logic with configurable, runtime-updateable configurations.
 * This addresses GitHub Copilot review comment about making model-specific logic configuration-based.
 */
import type { ModelTier, ProviderConfiguration, ConfigSource } from "../types/index.js";
/**
 * Model name constants - extracted from hardcoded values for better maintainability
 * These constants can be overridden by environment variables
 */
export declare const MODEL_NAMES: {
    readonly GOOGLE_AI: {
        readonly FAST: "gemini-2.5-flash";
        readonly BALANCED: "gemini-2.5-pro";
        readonly QUALITY: "gemini-2.5-pro";
    };
    readonly GOOGLE_VERTEX: {
        readonly FAST: "gemini-2.5-flash";
        readonly BALANCED: "gemini-2.5-pro";
        readonly QUALITY: "gemini-2.5-pro";
    };
    readonly OPENAI: {
        readonly FAST: "gpt-4o-mini";
        readonly BALANCED: "gpt-4o";
        readonly QUALITY: "gpt-4o";
    };
    readonly ANTHROPIC: {
        readonly FAST: "claude-3-haiku-20240307";
        readonly BALANCED: "claude-3-sonnet-20240229";
        readonly QUALITY: "claude-3-5-sonnet-20241022";
    };
    readonly VERTEX: {
        readonly FAST: "gemini-2.5-flash";
        readonly BALANCED: "gemini-2.5-pro";
        readonly QUALITY: "gemini-2.5-pro";
    };
    readonly BEDROCK: {
        readonly FAST: "anthropic.claude-3-haiku-20240307-v1:0";
        readonly BALANCED: "anthropic.claude-3-sonnet-20240229-v1:0";
        readonly QUALITY: "anthropic.claude-3-opus-20240229-v1:0";
    };
    readonly AZURE: {
        readonly FAST: "gpt-4o-mini";
        readonly BALANCED: "gpt-4o";
        readonly QUALITY: "gpt-4o";
    };
    readonly OLLAMA: {
        readonly FAST: "llama3.2:latest";
        readonly BALANCED: "llama3.1:8b";
        readonly QUALITY: "llama3.1:70b";
    };
    readonly HUGGINGFACE: {
        readonly FAST: "microsoft/DialoGPT-medium";
        readonly BALANCED: "microsoft/DialoGPT-large";
        readonly QUALITY: "meta-llama/Llama-2-7b-chat-hf";
    };
    readonly MISTRAL: {
        readonly FAST: "mistral-small-latest";
        readonly BALANCED: "mistral-medium-latest";
        readonly QUALITY: "mistral-large-latest";
    };
};
/**
 * Model configuration manager
 */
export declare class ModelConfigurationManager {
    private static instance;
    private configurations;
    private configSource;
    private lastUpdated;
    private constructor();
    static getInstance(): ModelConfigurationManager;
    /**
     * Create Google AI provider configuration
     */
    private createGoogleAIConfig;
    /**
     * Create Google Vertex AI provider configuration
     */
    private createVertexConfig;
    /**
     * Create OpenAI provider configuration
     */
    private createOpenAIConfig;
    /**
     * Create all provider configurations - centralized approach
     */
    private createAllProviderConfigurations;
    /**
     * Create Anthropic provider configuration
     */
    private createAnthropicConfig;
    /**
     * Create Vertex alternative provider configuration
     */
    private createVertexAlternativeConfig;
    /**
     * Create Bedrock provider configuration
     */
    private createBedrockConfig;
    /**
     * Create Azure provider configuration
     */
    private createAzureConfig;
    /**
     * Create Ollama provider configuration
     */
    private createOllamaConfig;
    /**
     * Create HuggingFace provider configuration
     */
    private createHuggingFaceConfig;
    /**
     * Create Mistral provider configuration
     */
    private createMistralConfig;
    /**
     * Load default configurations (replaces hardcoded values)
     */
    private loadDefaultConfigurations;
    /**
     * Helper method to get configuration value with fallback and validation
     */
    private getConfigValue;
    /**
     * Validate configuration values for security and correctness
     */
    private isValidConfigValue;
    /**
     * Helper method to get configuration array with fallback
     * Parses comma-separated environment variable values
     */
    private getConfigArray;
    /**
     * Helper method to parse float with fallback
     */
    private parseFloat;
    /**
     * Helper method to parse int with fallback
     */
    private parseInt;
    /**
     * Helper method to get configuration object with fallback
     * Parses JSON environment variable values
     */
    private getConfigObject;
    /**
     * Get provider configuration
     */
    getProviderConfiguration(provider: string): ProviderConfiguration | null;
    /**
     * Get all provider configurations
     */
    getAllConfigurations(): Map<string, ProviderConfiguration>;
    /**
     * Update provider configuration (runtime updates)
     */
    updateProviderConfiguration(provider: string, config: ProviderConfiguration): void;
    /**
     * Parse YAML content with basic support
     * For full YAML support, would need a proper YAML library
     */
    private parseYAMLContent;
    /**
     * Convert simple YAML to JSON object
     * Handles basic key-value pairs only
     */
    private convertSimpleYAMLToJSON;
    /**
     * Process a single YAML line
     * Returns key-value pair if valid, null otherwise
     */
    private processYAMLLine;
    /**
     * Convert YAML value to appropriate JavaScript type
     */
    private convertYAMLValue;
    /**
     * Load configurations from external source
     */
    loadConfigurationsFromFile(configPath: string): void;
    /**
     * Validate provider configuration structure
     */
    private isValidProviderConfiguration;
    /**
     * Apply model name overrides from configuration file
     */
    private applyModelNameOverrides;
    /**
     * Apply global default configurations
     */
    private applyGlobalDefaults;
    /**
     * Get configuration metadata
     */
    getConfigurationMeta(): {
        source: ConfigSource;
        lastUpdated: number;
        providerCount: number;
    };
    /**
     * Get model for specific tier and provider
     */
    getModelForTier(provider: string, tier: ModelTier): string | null;
    /**
     * Get cost information for provider and model
     */
    getCostInfo(provider: string, model?: string): {
        input: number;
        output: number;
    } | null;
    /**
     * Check if provider is available (has required environment variables)
     */
    isProviderAvailable(provider: string): boolean;
    /**
     * Get available providers
     */
    getAvailableProviders(): ProviderConfiguration[];
}
/**
 * Global instance accessor
 */
export declare const modelConfig: ModelConfigurationManager;
/**
 * Convenience functions for common operations
 */
/**
 * Get provider configuration (backwards compatible)
 */
export declare function getProviderConfiguration(provider: string): ProviderConfiguration | null;
/**
 * Get model for tier (backwards compatible)
 */
export declare function getModelForTier(provider: string, tier: ModelTier): string | null;
/**
 * Get cost information (backwards compatible)
 */
export declare function getCostInfo(provider: string, model?: string): {
    input: number;
    output: number;
} | null;
/**
 * Check provider availability (backwards compatible)
 */
export declare function isProviderAvailable(provider: string): boolean;
