import type { LLMProvider, ChatRequest, ChatResponse, ProviderEmbeddingRequest, ProviderEmbeddingResult, ProviderRuntimeMetadata, ProviderRuntimeMetadataDeps } from './interface.js';
import type { CacheHitTracker } from './cache-strategy.js';
/**
 * GeminiProvider — calls the Gemini generateContent API directly via fetch.
 * Tools are `functionDeclarations` inside a `tools` array.
 * Tool calls come as `functionCall` parts; results as `functionResponse` parts.
 * Uses streamGenerateContent for real-time token delivery when onDelta is provided.
 */
export declare class GeminiProvider implements LLMProvider {
    readonly name = "gemini";
    /** Maps function call name → thoughtSignature for the current turn. */
    private thoughtSignatures;
    readonly models: string[];
    private readonly apiKey;
    private readonly embeddingModel;
    private readonly cacheHitTracker;
    /** Active cached content resource name (e.g., "cachedContents/abc123") */
    private cachedContentName;
    /** Hash of the content that was cached (systemPrompt + tools + model) */
    private cachedContentHash;
    /** When the cache expires (epoch ms) */
    private cachedContentExpiry;
    /** Hashes known to be below the 32K cache minimum — skip API call */
    private uncacheableHashes;
    constructor(apiKey: string, cacheHitTracker?: Pick<CacheHitTracker, 'recordTurn'>);
    private computeCacheHash;
    private ensureCachedContent;
    chat(params: ChatRequest): Promise<ChatResponse>;
    embed(request: ProviderEmbeddingRequest): Promise<ProviderEmbeddingResult>;
    describeRuntime(deps: ProviderRuntimeMetadataDeps): Promise<ProviderRuntimeMetadata>;
}
//# sourceMappingURL=gemini.d.ts.map