import { PrivacyConfig } from "../core/privacy.js";
import { AmplitudeOrAI } from "../types.js";
import { BaseAIProvider } from "./base.js";

//#region src/providers/gemini.d.ts

declare const GEMINI_AVAILABLE: boolean;
declare const _GeminiModule: Record<string, unknown> | null;
interface GeminiOptions {
  amplitude: AmplitudeOrAI;
  apiKey?: string;
  privacyConfig?: PrivacyConfig | null;
  /**
   * Adopt an already-constructed `GoogleGenerativeAI` client instead of
   * building a fresh one from `apiKey`. Used by `wrap()` so the caller's
   * configured client (custom transport, base URL, etc.) is preserved.
   */
  client?: unknown;
  /** Pass the `@google/generative-ai` module directly to bypass `tryRequire` (required in bundler environments). */
  geminiModule?: unknown;
}
declare class Gemini extends BaseAIProvider {
  private _client;
  constructor(options: GeminiOptions);
  generateContent(model: string, params: Record<string, unknown>): Promise<unknown>;
  generateContentStream(model: string, params: Record<string, unknown>): Promise<unknown>;
  get client(): unknown;
  private _wrapStream;
}
declare function extractGeminiResponse(response: unknown): {
  text: string;
  inputTokens?: number;
  outputTokens?: number;
  totalTokens?: number;
  cacheReadTokens?: number;
  finishReason?: string;
  functionCalls?: Array<Record<string, unknown>>;
};
//#endregion
export { GEMINI_AVAILABLE, Gemini, GeminiOptions, _GeminiModule, extractGeminiResponse };
//# sourceMappingURL=gemini.d.ts.map