import type { APIConnectOptions } from '@livekit/agents';
import { llm } from '@livekit/agents';
import OpenAI from 'openai';
import type { ChatModels, Reasoning } from '../models.js';
export interface LLMOptions {
    model: string | ChatModels;
    apiKey?: string;
    baseURL?: string;
    client?: OpenAI;
    temperature?: number;
    parallelToolCalls?: boolean;
    toolChoice?: llm.ToolChoice;
    store?: boolean;
    metadata?: Record<string, string>;
    strictToolSchema?: boolean;
    /** Specifies the processing tier (e.g. 'auto', 'default', 'priority', 'flex'). */
    serviceTier?: string;
    /** Upper bound for the number of tokens that can be generated for a response. */
    maxOutputTokens?: number;
    /** Configuration options for reasoning models. */
    reasoning?: Reasoning | null;
    /**
     * Whether to use the WebSocket API.
     * @default true
     */
    useWebSocket?: boolean;
}
export declare class LLM extends llm.LLM {
    #private;
    /**
     * Create a new instance of OpenAI Responses LLM.
     *
     * @remarks
     * `apiKey` must be set to your OpenAI API key, either using the argument or by setting the
     * `OPENAI_API_KEY` environment variable.
     */
    constructor(opts?: Partial<LLMOptions>);
    label(): string;
    get model(): string;
    prewarm(): void;
    aclose(): Promise<void>;
    close(): Promise<void>;
    chat({ chatCtx, toolCtx, connOptions, parallelToolCalls, toolChoice, extraKwargs, }: {
        chatCtx: llm.ChatContext;
        toolCtx?: llm.ToolContextLike;
        connOptions?: APIConnectOptions;
        parallelToolCalls?: boolean;
        toolChoice?: llm.ToolChoice;
        extraKwargs?: Record<string, unknown>;
    }): llm.LLMStream;
}
//# sourceMappingURL=llm.d.ts.map