import type { ModelChatOptions, ModelChatResult, ModelDescriptor, ModelFileAnalysisOptions } from "./types.js";
export declare const defaultGeminiWrapperModel = "auto";
export declare const geminiWrapperShortcutModels: readonly ["auto", "flash", "pro"];
export declare const geminiWrapperLegacyModels: readonly ["thinking"];
export declare const geminiWrapperCuratedModels: readonly ["auto", "flash", "pro", "thinking"];
export declare const geminiWebApiVersion = "2.0.0";
export declare const geminiWebApiInstallCommand: string;
type GeminiWrapperRuntimeOptions = {
    maxTokens: number;
    temperature: number;
    bridgeMinIntervalMs?: number;
    bridgeTimeoutMs?: number;
};
type GeminiWrapperMode = "auto" | "http" | "python";
export type GeminiWrapperBrowserCookie = {
    name: string;
    value: string;
    domain?: string;
    path?: string;
    expires?: number | null;
    source?: string;
};
export type GeminiWrapperBrowserCookieImportResult = {
    cookiesPath: string;
    cookieCount: number;
    source: string;
    availableSources: string[];
    hasSecure1psid: boolean;
    hasSecure1psidts: boolean;
};
export declare class GeminiWrapperClient {
    private readonly baseUrl;
    private readonly apiKey;
    private readonly runtimeOptions;
    private readonly mode;
    private readonly pythonCommand;
    private readonly cookiesJson;
    private modelDescriptorCache;
    private pythonBridgeReadyUntil;
    private pythonBridgeReadyPromise;
    constructor(baseUrl?: string, apiKey?: string, runtimeOptions?: GeminiWrapperRuntimeOptions, mode?: GeminiWrapperMode, pythonCommand?: string, cookiesJson?: string);
    chat(options: ModelChatOptions): Promise<ModelChatResult>;
    listModels(): Promise<string[]>;
    listModelDescriptors(): Promise<ModelDescriptor[]>;
    supportsFileAnalysis(): boolean;
    analyzeFile(options: ModelFileAnalysisOptions): Promise<ModelChatResult>;
    checkBridgeAuth(): Promise<void>;
    private fetchGeminiWrapper;
    private headers;
    private assertConfigured;
    private usesPythonBridge;
    private chatWithPythonBridge;
    private runPythonBridge;
    private resolveGeminiWrapperBridgeModel;
    private getCachedModelDescriptors;
    private assertPythonBridgeReady;
    private checkPythonBridgeReady;
}
export declare function readGeminiWrapperMode(env?: NodeJS.ProcessEnv): GeminiWrapperMode;
export declare function readGeminiWrapperBaseUrl(env?: NodeJS.ProcessEnv): string;
export declare function readGeminiWrapperApiKey(env?: NodeJS.ProcessEnv): string;
export declare function readGeminiWrapperCookiesJson(env?: NodeJS.ProcessEnv): string;
export declare function getDefaultGeminiWrapperCookiesPath(env?: NodeJS.ProcessEnv): string;
export declare function saveGeminiWrapperCookieFile(values: {
    secure1psid: string;
    secure1psidts?: string;
}, env?: NodeJS.ProcessEnv): string;
export declare function saveGeminiWrapperCookieJarFile(cookies: GeminiWrapperBrowserCookie[], env?: NodeJS.ProcessEnv): string;
export declare function importGeminiWrapperBrowserCookies(options?: {
    pythonCommand?: string;
    env?: NodeJS.ProcessEnv;
    timeoutMs?: number;
}): Promise<GeminiWrapperBrowserCookieImportResult>;
export declare function readGeminiWrapperPythonCommand(env?: NodeJS.ProcessEnv): string;
export declare function readGeminiWrapperBootstrapPythonCommand(env?: NodeJS.ProcessEnv): string;
export declare function getGeminiWrapperVenvDir(env?: NodeJS.ProcessEnv): string;
export declare function getGeminiWrapperCookieCacheDir(env?: NodeJS.ProcessEnv): string;
export declare function clearGeminiWrapperCookieCache(env?: NodeJS.ProcessEnv): void;
export declare function getManagedGeminiWrapperPythonPath(env?: NodeJS.ProcessEnv): string;
export declare function readGeminiWrapperSecure1psid(env?: NodeJS.ProcessEnv): string;
export declare function readGeminiWrapperSecure1psidts(env?: NodeJS.ProcessEnv): string;
export declare function geminiWrapperRequiresApiKey(baseUrl: string): boolean;
export declare function isGeminiWebApiInstalled(pythonCommand?: string): Promise<boolean>;
export declare function isGeminiBrowserCookieImportInstalled(pythonCommand?: string): Promise<boolean>;
export declare function ensureGeminiWebApiInstalled(pythonCommand?: string, env?: NodeJS.ProcessEnv): Promise<boolean>;
/**
 * Map a curated shortcut to the model string the gemini_webapi bridge accepts
 * when live discovery is unavailable. Every returned non-empty value must be a
 * valid gemini_webapi `Model` model_name, or the bridge request hard-fails.
 */
export declare function normalizeGeminiWrapperBridgeModelFallback(model: string): string;
export {};
