import { CoreInterop } from '../detail/coreInterop.js';
import { ResponseFormat, ToolChoice } from '../types.js';
export declare class ChatClientSettings {
    frequencyPenalty?: number;
    maxTokens?: number;
    n?: number;
    temperature?: number;
    presencePenalty?: number;
    randomSeed?: number;
    topK?: number;
    topP?: number;
    responseFormat?: ResponseFormat;
    toolChoice?: ToolChoice;
    /**
     * Serializes the settings into an OpenAI-compatible request object.
     * @internal
     */
    _serialize(): any;
    /**
     * Validates that the provided ResponseFormat object is well-formed.
     * @internal
     * @param format
     */
    private validateResponseFormat;
    /**
     * Validates that the provided ToolChoice object is well-formed.
     * @internal
     * @param choice
     */
    private validateToolChoice;
}
/**
 * Client for performing chat completions with a loaded model.
 * Follows the OpenAI Chat Completion API structure.
 */
export declare class ChatClient {
    private modelId;
    private coreInterop;
    /**
     * Configuration settings for chat completions.
     */
    settings: ChatClientSettings;
    /**
     * @internal
     * Restricted to internal use because CoreInterop is an internal implementation detail.
     * Users should create clients via the Model.createChatClient() factory method.
     */
    constructor(modelId: string, coreInterop: CoreInterop);
    /**
     * Validates that messages array is properly formed.
     * @internal
     */
    private validateMessages;
    /**
     * Validates that tools array is properly formed.
     * @internal
     */
    private validateTools;
    /**
     * Performs a synchronous chat completion.
     * @param messages - An array of message objects (e.g., { role: 'user', content: 'Hello' }).
     * @param tools - An array of tool objects (e.g. { type: 'function', function: { name: 'get_apps', description: 'Returns a list of apps available on the system' } }).
     * @returns The chat completion response object.
     * @throws Error - If messages or tools are invalid or completion fails.
     */
    completeChat(messages: any[]): Promise<any>;
    completeChat(messages: any[], tools: any[]): Promise<any>;
    /**
     * Performs a streaming chat completion, returning an async iterable of chunks.
     * @param messages - An array of message objects.
     * @param tools - An optional array of tool objects.
     * @returns An async iterable that yields parsed streaming response chunks.
     * @throws Error - If messages or tools are invalid, or streaming fails.
     *
     * @example
     * ```typescript
     * // Without tools:
     * for await (const chunk of chatClient.completeStreamingChat(messages)) {
     *     const content = chunk.choices?.[0]?.delta?.content;
     *     if (content) process.stdout.write(content);
     * }
     *
     * // With tools:
     * for await (const chunk of chatClient.completeStreamingChat(messages, tools)) {
     *     const content = chunk.choices?.[0]?.delta?.content;
     *     if (content) process.stdout.write(content);
     * }
     * ```
     */
    completeStreamingChat(messages: any[]): AsyncIterable<any>;
    completeStreamingChat(messages: any[], tools: any[]): AsyncIterable<any>;
}
