import { HttpClient } from '../utils/http-client.js';
/**
 * Сообщение в чате
 */
export interface ChatMessage {
    /** Роль отправителя сообщения (system, user, assistant, function) */
    role: 'system' | 'user' | 'assistant' | 'function';
    /** Содержимое сообщения */
    content: string;
    /** Имя, если роль - function (опционально) */
    name?: string;
}
/**
 * Опции для запроса в чат
 */
export interface ChatOptions {
    /** Название модели (по умолчанию 'Claude') */
    model?: string;
    /** Температура генерации (0-1) */
    temperature?: number;
    /** Максимальное количество токенов в ответе */
    maxTokens?: number;
    /** Последовательности для остановки генерации */
    stopSequences?: string[];
    /** Список функций, доступных для вызова моделью */
    functions?: any[];
    /** Настройки вызова функций */
    functionCall?: 'auto' | 'none' | {
        name: string;
    };
    /** Активировать режим thinking (размышления) модели */
    thinking?: boolean;
    /** Регион API Anthropic (default: us-east-1) */
    region?: 'us-east-1' | 'eu-west-1' | 'ap-southeast-2';
    /** Системная инструкция (prompt) */
    systemPrompt?: string;
    /** ID сокета для WebSocket соединения */
    socketId?: string;
    /** Дополнительные опции модели */
    [key: string]: any;
}
/**
 * Содержимое сообщения в ответе
 */
export interface ChatResponseContent {
    /** Текст сообщения */
    content: string;
}
/**
 * Вариант ответа в чате
 */
export interface ChatResponseChoice {
    /** Сообщение от модели */
    message: ChatResponseContent;
    /** Причина завершения генерации */
    finish_reason: string;
    /** Ход размышлений модели (доступен, если был запрошен режим thinking) */
    thinking?: string;
    /** Криптографическая подпись блока thinking для верификации */
    thinking_signature?: string;
}
/**
 * Ответ модели на запрос в чате
 */
export interface ChatResponse {
    /** Варианты ответов */
    choices: ChatResponseChoice[];
}
/**
 * Чанк потоковой передачи ответа от модели
 */
export interface ChatStreamChunk {
    /** Текст чанка */
    text: string;
    /** Признак завершения потока */
    isComplete: boolean;
    /** Признак, что текущий чанк является частью размышлений модели */
    isThinking?: boolean;
    /** Полный текст размышлений (доступен только в финальном чанке) */
    thinkingContent?: string;
    /** Криптографическая подпись блока thinking (доступна только в финальном чанке) */
    thinkingSignature?: string;
}
/**
 * Опции для потоковой передачи
 */
export interface ChatStreamOptions extends ChatOptions {
    /** Обработчик получения каждого токена */
    onToken?: (token: string) => void;
    /** Обработчик получения полного ответа */
    onComplete?: (text: string) => void;
    /** Обработчик ошибок */
    onError?: (error: Error) => void;
    /** Токен авторизации для WebSocket соединения */
    authToken?: string;
}
/**
 * Ответ на запрос инициализации WebSocket соединения
 */
export interface WebSocketConnectResponse {
    /** Статус операции */
    status: string;
    /** ID сокета для использования в запросах */
    socketId: string;
    /** URL для подключения к WebSocket серверу */
    url: string;
    /** Пространство имен WebSocket */
    namespace: string;
    /** Протокол WebSocket (ws или wss) */
    protocol: string;
    /** Инструкции для использования */
    instructions?: string;
}
/**
 * Ответ на запрос потоковой передачи с thinking
 */
export interface ThinkingStreamResponse {
    /** Статус операции */
    status: string;
    /** Сообщение */
    message: string;
    /** ID сокета для получения событий */
    socketId: string;
    /** Провайдер модели */
    provider: string;
    /** Модель */
    model: string;
    /** Включен ли режим thinking */
    thinking: boolean;
}
/**
 * API для работы с чатом
 */
export declare class ChatApi {
    /** HTTP клиент */
    private readonly httpClient;
    /**
     * Создает новый экземпляр API для работы с чатом
     * @param {HttpClient} httpClient HTTP клиент
     */
    constructor(httpClient: HttpClient);
    /**
     * Отправляет сообщение в чат и получает ответ от модели
     * @param {ChatMessage[]} messages Массив сообщений для отправки
     * @param {ChatOptions} [options] Дополнительные параметры
     * @returns {Promise<ChatResponse>} Ответ модели
     */
    chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
    /**
     * Алиас для метода chat для совместимости с другими SDK
     * @param {ChatMessage[]} messages Массив сообщений для отправки
     * @param {ChatOptions} [options] Дополнительные параметры
     * @returns {Promise<ChatResponse>} Ответ модели
     */
    chatCompletion(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
    /**
     * Проверяет доступность API чата
     * @returns {Promise<boolean>} Результат проверки
     */
    checkAvailability(): Promise<boolean>;
    /**
     * Отправляет сообщение в чат и получает ответ от модели
     * с автоматическим переключением между регионами при ошибках перегрузки
     * @param {ChatMessage[]} messages Массив сообщений для отправки
     * @param {ChatOptions} [options] Дополнительные параметры
     * @returns {Promise<ChatResponse>} Ответ модели
     */
    chatWithRegionFailover(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
    /**
     * Отправляет одиночный запрос к модели с автоматическим переключением регионов
     * @param {string} prompt Запрос к модели
     * @param {ChatOptions} [options] Дополнительные параметры
     * @returns {Promise<string>} Текстовый ответ модели
     */
    sendPromptWithRegionFailover(prompt: string, options?: ChatOptions): Promise<string>;
    /**
     * Отправляет сообщение в чат в потоковом режиме
     * @param {ChatMessage[]} messages Массив сообщений для отправки
     * @param {ChatStreamOptions} [options] Дополнительные параметры
     * @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков ответа
     */
    streamChat(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>;
    /**
     * Отправляет запрос к модели в потоковом режиме (упрощенный интерфейс)
     * @param {string} prompt Запрос к модели
     * @param {ChatStreamOptions} [options] Дополнительные параметры
     * @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков ответа
     */
    streamPrompt(prompt: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>;
    /**
     * Создает новое WebSocket соединение для потокового чата
     * @returns {Promise<WebSocketConnectResponse>} Информация о созданном соединении
     */
    connectWebSocket(): Promise<WebSocketConnectResponse>;
    /**
     * Отправляет сообщение в чат в потоковом режиме с поддержкой thinking через WebSocket
     * @param {ChatMessage[]} messages Массив сообщений для отправки
     * @param {ChatStreamOptions} [options] Дополнительные параметры
     * @param {(eventType: string, data: any) => void} [onEvent] Обработчик событий WebSocket
     * @returns {Promise<ThinkingStreamResponse>} Информация о потоковом запросе
     */
    streamChatWithThinking(messages: ChatMessage[], options?: ChatStreamOptions, onEvent?: (eventType: string, data: any) => void): Promise<ThinkingStreamResponse>;
    /**
     * Генерирует случайный ID указанной длины
     * @param {number} length Длина ID
     * @returns {string} Сгенерированный ID
     */
    private generateId;
}
//# sourceMappingURL=chat-api.d.ts.map