/**
* **Composable для работы с системой рекомендаций Ensi Cloud Adviser**
*
* Предоставляет реактивные методы для взаимодействия с API рекомендаций Ensi Cloud Adviser.
* Позволяет получать умные рекомендации товаров на основе поведения пользователей.
*
* ## Основные возможности:
* - Получение рекомендаций "People also search for this product" - что искали с этим товаром
* - Получение рекомендаций "Searchers also viewed" - что смотрели искавшие
* - Получение рекомендаций "Cross Sell" - с этим товаром покупают
* - Получение рекомендаций "Up Sell" - более дорогие альтернативы
* - Получение рекомендаций "Up Sell New" - новая версия up sell
* - Получение недавно просмотренных товаров
* - Получение популярных товаров
* - Получение похожих товаров
* - Система кэширования с настраиваемым TTL
* - Автоматическая интеграция с BarneoConfigManager
*
* ## Пример использования:
* ```typescript
* import { useAdviser } from 'barneo-search-widget-lib'
*
* const adviser = useAdviser({
* enableCache: true,
* cacheTTL: 300000, // 5 минут
* apiLimit: 8
* })
*
* // Получение рекомендаций
* await adviser.getCrossSell('product-123')
* await adviser.getPopularProducts()
* ```
*
* @module useAdviser
*/
///
///
import { type AdviserServiceConfig } from "../services/AdviserService";
import type { RecommendationProductsRequest, RecommendationQueryProductsRequest, CrossSellProductsRequest, UpSellProductsRequest, RecentlyWatchedProductsRequest, PopularProductsSearchRequest, SimilarProductsSearchRequest } from "../types/requests";
import { LoadingStatus } from "../types/enums";
/**
* Интерфейс настроек советника
*
* Позволяет настроить поведение composable при инициализации.
* Все параметры являются опциональными и имеют разумные значения по умолчанию.
*/
interface AdviserOptions {
/**
* Конфигурация сервиса (опционально, если доступен BarneoConfigManager)
* Если не указана, будет автоматически получена из BarneoConfigManager
*/
serviceConfig?: AdviserServiceConfig;
/**
* Автоматическое обновление данных
* @default false
*/
autoRefresh?: boolean;
/**
* Интервал обновления в миллисекундах
* @default 30000 (30 секунд)
*/
refreshInterval?: number;
/**
* Максимальное количество рекомендаций для отображения
* @default 10
*/
maxRecommendations?: number;
/**
* Включить кэширование для оптимизации производительности
* @default true
*/
enableCache?: boolean;
/**
* Время жизни кэша в миллисекундах
* @default 300000 (5 минут)
*/
cacheTTL?: number;
/**
* Лимит записей для API запросов
* @default 5
*/
apiLimit?: number;
}
/**
* Composable для работы с системой рекомендаций Ensi Cloud Adviser
*
* Основная функция для получения умных рекомендаций товаров на основе поведения пользователей.
* Автоматически интегрируется с BarneoConfigManager для получения конфигурации API.
*
* ## Возвращаемые значения:
*
* ### Состояние:
* - `state` - реактивное состояние с данными рекомендаций
* - `isLoading` - вычисляемое свойство, true если идет загрузка
* - `hasError` - вычисляемое свойство, true если есть ошибка
* - `errorMessage` - вычисляемое свойство с текстом ошибки
* - `lastUpdateTime` - вычисляемое свойство с временем последнего обновления
*
* ### Методы получения рекомендаций:
* - `getPeopleAlsoSearch()` - что искали с этим товаром
* - `getSearchersAlsoViewed()` - что смотрели искавшие
* - `getCrossSell()` - с этим товаром покупают
* - `getUpSell()` - более дорогие альтернативы
* - `getUpSellNew()` - новая версия up sell
* - `getRecentlyWatched()` - недавно просмотренные товары
* - `getPopularProducts()` - популярные товары
* - `getSimilarProducts()` - похожие товары
*
* ### Утилиты:
* - `clearData()` - очистить все данные
* - `refreshData()` - обновить все данные
* - `clearCache()` - очистить кэш
* - `forceClear()` - принудительно очистить все данные и кэш
* - `startAutoRefresh()` - запустить автообновление
* - `stopAutoRefresh()` - остановить автообновление
*
* @param options - Опциональные настройки для настройки поведения
* @returns Объект с состоянием и методами для работы с рекомендациями
*
* @example
* ```typescript
* const adviser = useAdviser({
* enableCache: true,
* maxRecommendations: 8,
* apiLimit: 10
* })
*
* // Получение рекомендаций
* await adviser.getCrossSell('product-123')
* await adviser.getPopularProducts()
*
* // Проверка состояния
* console.log('Загрузка:', adviser.isLoading.value)
* console.log('Ошибка:', adviser.errorMessage.value)
* console.log('Данные:', adviser.state.value.crossSell)
* ```
*/
export declare function useAdviser(options?: Partial): {
/** Реактивное состояние с данными рекомендаций (только для чтения) */
state: Readonly>;
/** Вычисляемое свойство: true если идет загрузка */
isLoading: import("vue").ComputedRef;
/** Вычисляемое свойство: true если есть ошибка */
hasError: import("vue").ComputedRef;
/** Вычисляемое свойство: текст ошибки или null */
errorMessage: import("vue").ComputedRef;
/** Вычисляемое свойство: время последнего обновления */
lastUpdateTime: import("vue").ComputedRef;
/** Получить рекомендации "People also search for this product" - что искали с этим товаром */
getPeopleAlsoSearch: (productId: string, request?: Partial>) => Promise;
/** Получить рекомендации "Searchers also viewed" - что смотрели искавшие */
getSearchersAlsoViewed: (query: string, request?: Partial>) => Promise;
/** Получить рекомендации "Cross Sell" - с этим товаром покупают */
getCrossSell: (productId: string, request?: Partial>) => Promise;
/** Получить рекомендации "Up Sell" - более дорогие альтернативы */
getUpSell: (productId: string, request?: Partial>) => Promise;
/** Получить рекомендации "Up Sell New" - новая версия up sell */
getUpSellNew: (productId: string, request?: Partial>) => Promise;
/** Получить недавно просмотренные товары */
getRecentlyWatched: (customerId: string, request?: Partial>) => Promise;
/** Получить популярные товары */
getPopularProducts: (request?: Partial) => Promise;
/** Получить похожие товары */
getSimilarProducts: (request?: Partial) => Promise;
/** Очистить все данные рекомендаций */
clearData: () => void;
/** Обновить все данные рекомендаций */
refreshData: () => Promise;
/** Запустить автообновление данных */
startAutoRefresh: () => void;
/** Остановить автообновление данных */
stopAutoRefresh: () => void;
/** Очистить кэш рекомендаций */
clearCache: () => void;
/** Принудительно очистить все данные и кэш */
forceClear: () => void;
};
export {};
//# sourceMappingURL=useAdviser.d.ts.map