import { HttpClient } from '../utils/http-client.js';
/**
 * Информация о модели
 *
 * @interface ModelInfo
 * @property {string} id - Уникальный идентификатор модели
 * @property {string} name - Отображаемое имя модели
 * @property {string[]} capabilities - Список возможностей модели
 * @property {number} contextWindow - Максимальный размер контекстного окна в токенах
 * @property {boolean} isDefault - Флаг, указывающий является ли модель стандартной для провайдера
 * @property {number} [maxTokens] - Максимальное количество токенов ответа
 * @property {string[]} [supportedLanguages] - Список поддерживаемых языков
 */
export interface ModelInfo {
    /** Идентификатор модели */
    id: string;
    /** Имя модели */
    name: string;
    /** Возможности модели */
    capabilities: string[];
    /** Максимальный размер контекстного окна (в токенах) */
    contextWindow: number;
    /** Является ли модель по умолчанию для своего провайдера */
    isDefault: boolean;
    /** Максимальное количество токенов для ответа */
    maxTokens?: number;
    /** Поддерживаемые языки */
    supportedLanguages?: string[];
}
/**
 * Информация о моделях провайдера
 *
 * @interface ProviderModels
 * @property {string} provider - Идентификатор провайдера
 * @property {string} name - Название провайдера
 * @property {ModelInfo[]} models - Список моделей провайдера
 *
 * @example
 * ```javascript
 * {
 *   provider: "openai",
 *   name: "OpenAI",
 *   models: [
 *     {
 *       id: "gpt-4o",
 *       name: "GPT-4o",
 *       capabilities: ["chat", "completions"],
 *       contextWindow: 128000,
 *       isDefault: true,
 *       maxTokens: 4096,
 *       supportedLanguages: ["en", "ru", "fr", "de"]
 *     }
 *   ]
 * }
 * ```
 */
export interface ProviderModels {
    /** Идентификатор провайдера */
    provider: string;
    /** Имя провайдера */
    name: string;
    /** Список моделей */
    models: ModelInfo[];
}
/**
 * Ответ на запрос всех моделей
 *
 * @interface AllModelsResponse
 * @property {ProviderModels[]} models - Список моделей, сгруппированных по провайдерам
 *
 * @example
 * ```javascript
 * {
 *   models: [
 *     {
 *       provider: "openai",
 *       name: "OpenAI",
 *       models: [...]
 *     },
 *     {
 *       provider: "anthropic",
 *       name: "Anthropic",
 *       models: [...]
 *     }
 *   ]
 * }
 * ```
 */
export interface AllModelsResponse {
    /** Список моделей по провайдерам */
    models: ProviderModels[];
}
/**
 * Информация о провайдере
 *
 * @interface ProviderInfo
 * @property {string} id - Идентификатор провайдера
 * @property {string} name - Название провайдера
 * @property {string[]} capabilities - Список возможностей провайдера
 *
 * @example
 * ```javascript
 * {
 *   id: "openai",
 *   name: "OpenAI",
 *   capabilities: ["chat", "completions", "embeddings"]
 * }
 * ```
 */
export interface ProviderInfo {
    /** Идентификатор провайдера */
    id: string;
    /** Имя провайдера */
    name: string;
    /** Возможности провайдера */
    capabilities: string[];
}
/**
 * Ответ на запрос провайдеров
 *
 * @interface ProvidersResponse
 * @property {ProviderInfo[]} providers - Список доступных провайдеров
 *
 * @example
 * ```javascript
 * {
 *   providers: [
 *     {
 *       id: "openai",
 *       name: "OpenAI",
 *       capabilities: ["chat", "completions", "embeddings"]
 *     },
 *     {
 *       id: "anthropic",
 *       name: "Anthropic",
 *       capabilities: ["chat"]
 *     }
 *   ]
 * }
 * ```
 */
export interface ProvidersResponse {
    /** Список провайдеров */
    providers: ProviderInfo[];
}
/**
 * Информация о модели и её провайдере
 *
 * @interface ModelProviderInfo
 * @property {string} modelId - Идентификатор модели
 * @property {ProviderInfo} provider - Информация о провайдере
 * @property {boolean} isAvailable - Доступна ли модель в данный момент
 *
 * @example
 * ```javascript
 * {
 *   modelId: "gpt-4o",
 *   provider: {
 *     id: "openai",
 *     name: "OpenAI",
 *     capabilities: ["chat", "completions", "embeddings"]
 *   },
 *   isAvailable: true
 * }
 * ```
 */
export interface ModelProviderInfo {
    /** Идентификатор модели */
    modelId: string;
    /** Информация о провайдере */
    provider: ProviderInfo;
    /** Доступна ли модель */
    isAvailable: boolean;
}
/**
 * API для работы с моделями
 *
 * Предоставляет методы для получения информации о доступных моделях ИИ
 * и их провайдерах. Позволяет получить полный список моделей, список
 * провайдеров, модели конкретного провайдера или информацию о провайдере
 * для конкретной модели.
 *
 * @example
 * ```javascript
 * // Получение всех доступных моделей
 * const allModels = await sdk.models.getAllModels();
 * console.log(allModels.models);
 *
 * // Получение провайдеров
 * const providers = await sdk.models.getProviders();
 * console.log(providers.providers);
 *
 * // Получение моделей конкретного провайдера
 * const openaiModels = await sdk.models.getProviderModels('openai');
 * console.log(openaiModels.models);
 *
 * // Получение информации о провайдере для модели
 * const modelInfo = await sdk.models.getModelProvider('gpt-4o');
 * console.log(modelInfo.provider);
 * ```
 */
export declare class ModelsApi {
    /** HTTP клиент */
    private readonly httpClient;
    /**
     * Создает новый экземпляр API для работы с моделями
     * @param {HttpClient} httpClient HTTP клиент
     */
    constructor(httpClient: HttpClient);
    /**
     * Получает список всех доступных моделей
     *
     * Возвращает полный список доступных моделей, сгруппированных по провайдерам.
     * Каждая модель содержит информацию о своих возможностях, размере контекстного
     * окна и других характеристиках.
     *
     * @returns {Promise<AllModelsResponse>} Список моделей по провайдерам
     *
     * @example
     * ```javascript
     * const allModels = await sdk.models.getAllModels();
     *
     * // Получение всех моделей OpenAI
     * const openaiModels = allModels.models
     *   .find(provider => provider.provider === 'openai')?.models || [];
     *
     * // Получение всех доступных моделей всех провайдеров
     * const allAvailableModels = allModels.models
     *   .flatMap(provider => provider.models);
     * ```
     */
    getAllModels(): Promise<AllModelsResponse>;
    /**
     * Получает список провайдеров моделей
     *
     * Возвращает список всех доступных провайдеров моделей с информацией
     * об их возможностях и поддерживаемых функциях.
     *
     * @returns {Promise<ProvidersResponse>} Список провайдеров
     *
     * @example
     * ```javascript
     * const providers = await sdk.models.getProviders();
     *
     * // Получение провайдера по ID
     * const openai = providers.providers.find(p => p.id === 'openai');
     *
     * // Проверка поддержки определенной возможности
     * const supportsChat = providers.providers
     *   .some(p => p.capabilities.includes('chat'));
     * ```
     */
    getProviders(): Promise<ProvidersResponse>;
    /**
     * Получает модели конкретного провайдера
     *
     * Возвращает список моделей для указанного провайдера, включая информацию
     * о контекстном окне, поддерживаемых языках и других характеристиках.
     *
     * @param {string} providerId Идентификатор провайдера (например, openai, anthropic, google)
     * @returns {Promise<ProviderModels>} Модели провайдера
     *
     * @example
     * ```javascript
     * // Получение моделей OpenAI
     * const openaiModels = await sdk.models.getProviderModels('openai');
     *
     * // Получение модели с наибольшим контекстным окном
     * const modelWithLargestContext = openaiModels.models
     *   .sort((a, b) => b.contextWindow - a.contextWindow)[0];
     *
     * // Получение модели по умолчанию
     * const defaultModel = openaiModels.models
     *   .find(model => model.isDefault);
     * ```
     */
    getProviderModels(providerId: string): Promise<ProviderModels>;
    /**
     * Получает информацию о провайдере для указанной модели
     *
     * Возвращает информацию о провайдере, которому принадлежит указанная модель,
     * а также сведения о доступности модели в данный момент.
     *
     * @param {string} modelId Идентификатор модели (например, gpt-4o, claude-3-opus)
     * @returns {Promise<ModelProviderInfo>} Информация о модели и провайдере
     *
     * @example
     * ```javascript
     * // Получение информации о провайдере для модели
     * const modelInfo = await sdk.models.getModelProvider('gpt-4o');
     *
     * // Проверка доступности модели
     * if (modelInfo.isAvailable) {
     *   console.log(`Модель ${modelInfo.modelId} доступна у провайдера ${modelInfo.provider.name}`);
     * } else {
     *   console.log(`Модель ${modelInfo.modelId} в данный момент недоступна`);
     * }
     * ```
     */
    getModelProvider(modelId: string): Promise<ModelProviderInfo>;
}
//# sourceMappingURL=models-api.d.ts.map