import { a as AdapterHooks, b as AgentRunner, aX as StreamingCallbackRunner } from './types-CRmwFnVk.js';
import '@directive-run/core';

/**
 * @directive-run/ai/gemini
 *
 * Google Gemini adapter for Directive AI. Provides runners for the
 * Gemini generateContent API, including streaming support.
 *
 * @example
 * ```typescript
 * import { createGeminiRunner, createGeminiStreamingRunner } from '@directive-run/ai/gemini';
 *
 * const runner = createGeminiRunner({ apiKey: process.env.GEMINI_API_KEY! });
 * ```
 */

/**
 * Gemini model pricing (USD per million tokens).
 *
 * Use with `estimateCost()` for per-call cost tracking:
 * ```typescript
 * import { estimateCost } from '@directive-run/ai';
 * import { GEMINI_PRICING } from '@directive-run/ai/gemini';
 *
 * const cost =
 *   estimateCost(result.tokenUsage!.inputTokens, GEMINI_PRICING["gemini-2.0-flash"].input) +
 *   estimateCost(result.tokenUsage!.outputTokens, GEMINI_PRICING["gemini-2.0-flash"].output);
 * ```
 *
 * **Note:** Pricing changes over time. These values are provided as a convenience
 * and may not reflect the latest rates. Always verify at https://ai.google.dev/pricing
 */
declare const GEMINI_PRICING: Record<string, {
    input: number;
    output: number;
}>;
/** Options for createGeminiRunner */
interface GeminiRunnerOptions {
    apiKey: string;
    model?: string;
    maxOutputTokens?: number;
    baseURL?: string;
    fetch?: typeof globalThis.fetch;
    /** @default undefined */
    timeoutMs?: number;
    /** Lifecycle hooks for tracing, logging, and metrics */
    hooks?: AdapterHooks;
    /** Sampling temperature. Higher = more random. */
    temperature?: number;
    /** Nucleus sampling: top-P probability mass (0–1). */
    topP?: number;
    /** Stop sequences. The model will stop generating when it encounters one. */
    stopSequences?: string[];
}
/**
 * Create an AgentRunner for the Google Gemini generateContent API.
 *
 * Returns `tokenUsage` with input/output breakdown for cost tracking.
 *
 * @example
 * ```typescript
 * const runner = createGeminiRunner({
 *   apiKey: process.env.GEMINI_API_KEY!,
 *   model: 'gemini-2.0-flash',
 * });
 * const orchestrator = createAgentOrchestrator({ runner });
 * const result = await orchestrator.run(agent, input);
 * ```
 */
declare function createGeminiRunner(options: GeminiRunnerOptions): AgentRunner;
/** Options for createGeminiStreamingRunner */
interface GeminiStreamingRunnerOptions {
    apiKey: string;
    model?: string;
    maxOutputTokens?: number;
    baseURL?: string;
    fetch?: typeof globalThis.fetch;
    /** Lifecycle hooks for tracing, logging, and metrics */
    hooks?: AdapterHooks;
    /** Sampling temperature. Higher = more random. */
    temperature?: number;
    /** Nucleus sampling: top-P probability mass (0–1). */
    topP?: number;
    /** Stop sequences. The model will stop generating when it encounters one. */
    stopSequences?: string[];
}
/**
 * Create a StreamingCallbackRunner for the Gemini streamGenerateContent API
 * with server-sent events. Can be used standalone or paired with `createGeminiRunner`.
 *
 * Returns `tokenUsage` with input/output breakdown for cost tracking.
 *
 * @example
 * ```typescript
 * const streamingRunner = createGeminiStreamingRunner({
 *   apiKey: process.env.GEMINI_API_KEY!,
 * });
 * const streamRunner = createStreamingRunner(streamingRunner);
 * const { stream, result } = streamRunner(agent, input);
 * ```
 */
declare function createGeminiStreamingRunner(options: GeminiStreamingRunnerOptions): StreamingCallbackRunner;

export { GEMINI_PRICING, type GeminiRunnerOptions, type GeminiStreamingRunnerOptions, createGeminiRunner, createGeminiStreamingRunner };
