import type { DynamicModelConfig as ModelConfig } from "../types/index.js";
/**
 * Dynamic Model Provider
 * Loads and manages model configurations from external sources
 */
export declare class DynamicModelProvider {
    private static instance;
    private modelRegistry;
    private lastFetch;
    private readonly CACHE_DURATION;
    private constructor();
    static getInstance(): DynamicModelProvider;
    /**
     * Initialize the model registry from multiple sources with timeout handling
     * Addresses hanging issues when localhost:3001 is not running or GitHub URLs timeout
     */
    initialize(): Promise<void>;
    /**
     * Load configuration from a source with timeout handling
     * Prevents hanging when local servers are down or network requests timeout
     */
    private loadFromSourceWithTimeout;
    /**
     * Quick health check for localhost endpoints
     * Prevents hanging on non-responsive local servers
     */
    private healthCheckLocalhost;
    /**
     * Get all available models for a provider
     */
    getModelsForProvider(provider: string): Record<string, ModelConfig>;
    /**
     * Resolve a model by provider and model hint
     */
    resolveModel(provider: string, modelHint?: string): ModelConfig | null;
    /**
     * Search models by capabilities
     */
    searchByCapability(capability: string, options?: {
        provider?: string;
        maxPrice?: number;
        excludeDeprecated?: boolean;
    }): Array<{
        provider: string;
        model: string;
        config: ModelConfig;
    }>;
    /**
     * Get the best model for a specific use case
     */
    getBestModelFor(useCase: "coding" | "analysis" | "vision" | "fastest" | "cheapest"): {
        provider: string;
        model: string;
        config: ModelConfig;
    } | null;
    /**
     * Get all models across all providers
     */
    getAllModels(): Array<{
        provider: string;
        model: string;
        config: ModelConfig;
    }>;
    /**
     * Get total number of models
     */
    getTotalModelCount(): number;
    /**
     * Check if cache needs refresh
     */
    needsRefresh(): boolean;
    /**
     * Force refresh the model registry
     */
    refresh(): Promise<void>;
    /**
     * Ensure the registry is initialized
     */
    private ensureInitialized;
    /**
     * Get registry metadata
     */
    getMetadata(): {
        version: string;
        lastUpdated: string;
        modelCount: number;
    } | null;
}
export declare const dynamicModelProvider: DynamicModelProvider;
