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

//#region src/providers/google-genai.d.ts

declare const GOOGLE_GENAI_AVAILABLE: boolean;
declare const _GoogleGenAIModule: Record<string, unknown> | null;
interface GoogleGenAIOptions {
  amplitude: AmplitudeOrAI;
  apiKey?: string;
  privacyConfig?: PrivacyConfig | null;
  /**
   * Adopt an already-constructed `GoogleGenAI` client instead of building a
   * fresh one from `apiKey`/`clientOptions`. Used by `wrap()` so the caller's
   * configured client (Vertex AI, project, location, etc.) is preserved.
   */
  client?: unknown;
  /** Pass the `@google/genai` module directly to bypass `tryRequire` (required in bundler environments). */
  googleGenAIModule?: unknown;
  /** Additional constructor options forwarded to `new GoogleGenAI(...)` (e.g. `vertexai`, `project`, `location`). */
  clientOptions?: Record<string, unknown>;
}
declare class GoogleGenAI extends BaseAIProvider {
  private _client;
  constructor(options: GoogleGenAIOptions);
  private _models;
  generateContent(params: Record<string, unknown>): Promise<unknown>;
  generateContentStream(params: Record<string, unknown>): Promise<AsyncGenerator<unknown>>;
  get client(): unknown;
  private _wrapStream;
}
declare function extractGoogleGenAIResponse(response: unknown): {
  text: string;
  inputTokens?: number;
  outputTokens?: number;
  totalTokens?: number;
  cacheReadTokens?: number;
  finishReason?: string;
  functionCalls?: Array<Record<string, unknown>>;
};
//#endregion
export { GOOGLE_GENAI_AVAILABLE, GoogleGenAI, GoogleGenAIOptions, _GoogleGenAIModule, extractGoogleGenAIResponse };
//# sourceMappingURL=google-genai.d.ts.map