/**
 * Dynamic Gemini model discovery with caching.
 *
 * Fetches available models from the Gemini API and categorizes them by
 * capability. Results are cached in memory and refreshed periodically.
 */
/** How we categorize a model's primary capability. */
export type GeminiCapability = "image_generation" | "music" | "text" | "video_generation" | "tts";
export interface GeminiModelInfo {
    /** Model ID (e.g. "gemini-3.1-flash-image-preview"). */
    id: string;
    /** Human-readable display name. */
    displayName: string;
    /** Raw supportedActions from the API. */
    supportedActions: string[];
    /** Our inferred capability category. */
    capability: GeminiCapability;
}
/**
 * Get categorized Gemini models, using cache when fresh.
 * Returns empty array if the API call fails and no cache exists.
 */
export declare function getGeminiModels(apiKey: string): Promise<GeminiModelInfo[]>;
/**
 * Get all models for a specific capability, sorted by ID descending
 * (newer versions typically have higher version numbers).
 */
export declare function getModelsForCapability(apiKey: string, capability: GeminiCapability): Promise<GeminiModelInfo[]>;
/**
 * Build a human-readable summary of available models, grouped by capability.
 * Used to dynamically populate the tool description.
 */
export declare function formatModelList(models: GeminiModelInfo[]): string;
/** Clear the cache (for testing). */
export declare function clearModelCache(): void;
//# sourceMappingURL=gemini-models.d.ts.map