/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { CountTokensResponse, GenerateContentResponse, type GenerateContentParameters, type CountTokensParameters, EmbedContentResponse, type EmbedContentParameters } from '@google/genai';
import { Config } from '../config/config.js';
import type { IProviderManager as ProviderManager } from '../providers/IProviderManager.js';
import { UserTierId } from '../code_assist/types.js';
/**
 * Interface abstracting the core functionalities for generating content and counting tokens.
 */
export interface ContentGenerator {
    generateContent(request: GenerateContentParameters, userPromptId: string): Promise<GenerateContentResponse>;
    generateContentStream(request: GenerateContentParameters, userPromptId: string): Promise<AsyncGenerator<GenerateContentResponse>>;
    countTokens(request: CountTokensParameters): Promise<CountTokensResponse>;
    embedContent(request: EmbedContentParameters): Promise<EmbedContentResponse>;
    userTier?: UserTierId;
}
export declare enum AuthType {
    LOGIN_WITH_GOOGLE = "oauth-personal",
    USE_GEMINI = "gemini-api-key",
    USE_VERTEX_AI = "vertex-ai",
    CLOUD_SHELL = "cloud-shell",
    USE_PROVIDER = "provider",
    USE_NONE = "none",
    OAUTH_GEMINI = "oauth_gemini",
    OAUTH_QWEN = "oauth_qwen",
    OAUTH_ANTHROPIC = "oauth_anthropic",
    API_KEY = "api-key",
    OAUTH = "oauth"
}
export type ContentGeneratorConfig = {
    model: string;
    apiKey?: string;
    vertexai?: boolean;
    authType?: AuthType;
    providerManager?: ProviderManager;
    proxy?: string;
};
export declare function createContentGeneratorConfig(config: Config, authType: AuthType | undefined): ContentGeneratorConfig;
export declare function createContentGenerator(config: ContentGeneratorConfig, gcConfig: Config, sessionId?: string): Promise<ContentGenerator>;
