/**
* **Composable для аналитики Barneo Search Widget**
*
* Предоставляет удобный интерфейс для отправки аналитических данных в систему Barneo.
* Позволяет отслеживать пользовательское поведение и взаимодействия с поисковым интерфейсом.
*
* ## Основные возможности:
* - Объединение неавторизованного и авторизованного пользователя
* - Отслеживание поисковых запросов
* - Отслеживание использования функций поиска (фильтры, подсказки, история)
* - Отслеживание применения поисковых подсказок
* - Отслеживание конверсии товаров (клики, корзина, заказы)
* - Отслеживание конверсии категорий
* - Быстрые методы для удобного отслеживания
* - Автоматическая интеграция с BarneoConfigManager
*
* ## Пример использования:
* ```typescript
* import { useAnalytics } from 'barneo-search-widget-lib'
*
* const analytics = useAnalytics()
*
* // Отслеживание событий
* await analytics.trackQueryUse('сковорода')
* await analytics.quickTrack.productClick('product-123', {
* position: 1,
* query: 'сковорода',
* source: 'search'
* })
* ```
*
* @module analytics-composable
*/
///
///
import { SearchFunction, ProductConversionSource, ProductConversionType, CategoryConversionSource } from "../types/enums";
import type { AuthorizeCustomerRequest } from "../types/requests";
/**
* **Composable для работы с аналитикой**
*
* Основная функция для отслеживания пользовательского поведения в поисковом интерфейсе.
* Автоматически интегрируется с BarneoConfigManager для получения конфигурации API.
*
* ## Возвращаемые значения:
*
* ### Состояние:
* - `isLoading` - реактивное состояние загрузки (только для чтения)
* - `error` - реактивное состояние ошибки (только для чтения)
* - `isInitialized` - вычисляемое свойство, true если сервис инициализирован
* - `getConfigInfo` - вычисляемое свойство с информацией о конфигурации
*
* ### Методы инициализации:
* - `initializeAnalytics()` - инициализация с кастомной конфигурацией
*
* ### Основные методы отслеживания:
* - `authorizeCustomer()` - объединение пользователей
* - `mergeCustomers()` - удобный метод для объединения пользователей
* - `trackQueryUse()` - отслеживание поискового запроса
* - `trackFunctionUse()` - отслеживание использования функций
* - `trackHintUse()` - отслеживание применения подсказки
* - `trackProductConversion()` - отслеживание конверсии товара
* - `trackCategoryConversion()` - отслеживание конверсии категории
*
* ### Быстрые методы (quickTrack):
* - `productClick()` - быстрое отслеживание клика по товару
* - `productBasket()` - быстрое отслеживание добавления в корзину
* - `productOrder()` - быстрое отслеживание заказа
* - `categoryClick()` - быстрое отслеживание клика по категории
* - `filterUse()` - быстрое отслеживание использования фильтров
* - `hintUse()` - быстрое отслеживание использования подсказок
* - `historyUse()` - быстрое отслеживание использования истории
*
* ### Утилиты:
* - `clearError()` - очистка ошибки
*
* @returns Объект с состоянием и методами для работы с аналитикой
*
* @example
* ```typescript
* const analytics = useAnalytics()
*
* // Проверка инициализации
* console.log('Инициализирована:', analytics.isInitialized.value)
* console.log('Конфигурация:', analytics.getConfigInfo.value)
*
* // Отслеживание событий
* await analytics.trackQueryUse('сковорода')
* await analytics.quickTrack.productClick('product-123', {
* position: 1,
* query: 'сковорода',
* source: 'search'
* })
*
* // Проверка состояния
* console.log('Загрузка:', analytics.isLoading.value)
* console.log('Ошибка:', analytics.error.value)
* ```
*/
export declare function useAnalytics(): {
/** Реактивное состояние загрузки (только для чтения) */
isLoading: Readonly>;
/** Реактивное состояние ошибки (только для чтения) */
error: Readonly>;
/** Вычисляемое свойство: true если сервис инициализирован */
isInitialized: import("vue").ComputedRef;
/** Вычисляемое свойство: информация о конфигурации */
getConfigInfo: import("vue").ComputedRef<{
baseUrl: string;
customerId: string;
locationId: string;
apiVersion: string | undefined;
} | null>;
/** Инициализировать сервис аналитики с кастомной конфигурацией */
initializeAnalytics: (config: {
baseUrl: string;
token: string;
customerId: string;
locationId: string;
apiVersion?: string;
}) => void;
/** Объединение неавторизованного и авторизованного пользователя */
authorizeCustomer: (request: AuthorizeCustomerRequest) => Promise | null>;
/** Удобный метод для объединения пользователей */
mergeCustomers: (guestId: string, authorizedId: string) => Promise | null>;
/** Отслеживание поискового запроса клиента */
trackQueryUse: (query: string) => Promise | null>;
/** Отслеживание использования функции поиска */
trackFunctionUse: (functionName: SearchFunction) => Promise | null>;
/** Отслеживание применения поисковой подсказки */
trackHintUse: (query: string, hint: string) => Promise | null>;
/** Отслеживание конверсии товара */
trackProductConversion: (productId: string, conversion: ProductConversionType, options?: {
source?: ProductConversionSource;
position?: number;
query?: string;
}) => Promise | null>;
/** Отслеживание конверсии категории */
trackCategoryConversion: (categoryId: string, options?: {
query?: string;
source?: CategoryConversionSource;
}) => Promise | null>;
/** Объект с упрощенными методами для частых операций отслеживания */
quickTrack: {
/**
* Быстрое отслеживание клика по товару
*
* Упрощенный метод для отслеживания клика по товару.
* Внутренне вызывает `trackProductConversion` с типом 'click'.
*
* @param productId - ID товара
* @param options - Дополнительные параметры
* @param options.position - Позиция товара в результатах поиска
* @param options.query - Поисковый запрос, который привел к клику
* @param options.source - Источник клика (search, category, recommendation)
*
* @example
* ```typescript
* // Быстрое отслеживание клика
* await analytics.quickTrack.productClick('product-123', {
* position: 1,
* query: 'сковорода',
* source: 'search'
* })
* ```
*/
productClick: (productId: string, options?: {
position?: number;
query?: string;
source?: ProductConversionSource;
}) => Promise | null>;
/**
* Быстрое отслеживание добавления товара в корзину
*
* Упрощенный метод для отслеживания добавления товара в корзину.
* Внутренне вызывает `trackProductConversion` с типом 'basket'.
*
* @param productId - ID товара
* @param options - Дополнительные параметры
* @param options.position - Позиция товара в результатах поиска
* @param options.query - Поисковый запрос, который привел к добавлению в корзину
* @param options.source - Источник добавления в корзину (search, category, recommendation)
*
* @example
* ```typescript
* // Быстрое отслеживание добавления в корзину
* await analytics.quickTrack.productBasket('product-123', {
* position: 2,
* query: 'сковорода',
* source: 'search'
* })
* ```
*/
productBasket: (productId: string, options?: {
position?: number;
query?: string;
source?: ProductConversionSource;
}) => Promise | null>;
/**
* Быстрое отслеживание заказа товара
*
* Упрощенный метод для отслеживания заказа товара.
* Внутренне вызывает `trackProductConversion` с типом 'order'.
*
* @param productId - ID товара
* @param options - Дополнительные параметры
* @param options.position - Позиция товара в результатах поиска
* @param options.query - Поисковый запрос, который привел к заказу
* @param options.source - Источник заказа (search, category, recommendation)
*
* @example
* ```typescript
* // Быстрое отслеживание заказа
* await analytics.quickTrack.productOrder('product-123', {
* position: 3,
* query: 'сковорода',
* source: 'search'
* })
* ```
*/
productOrder: (productId: string, options?: {
position?: number;
query?: string;
source?: ProductConversionSource;
}) => Promise | null>;
/**
* Быстрое отслеживание клика по категории
*
* Упрощенный метод для отслеживания клика по категории.
* Внутренне вызывает `trackCategoryConversion`.
*
* @param categoryId - ID категории
* @param options - Дополнительные параметры
* @param options.query - Поисковый запрос, который привел к клику по категории
* @param options.source - Источник клика (search, navigation)
*
* @example
* ```typescript
* // Быстрое отслеживание клика по категории
* await analytics.quickTrack.categoryClick('category-456', {
* query: 'посуда',
* source: 'search'
* })
* ```
*/
categoryClick: (categoryId: string, options?: {
query?: string;
source?: CategoryConversionSource;
}) => Promise | null>;
/**
* Быстрое отслеживание использования фильтров
*
* Упрощенный метод для отслеживания использования фильтров.
* Внутренне вызывает `trackFunctionUse` с функцией 'filter'.
*
* @example
* ```typescript
* // Быстрое отслеживание использования фильтров
* await analytics.quickTrack.filterUse()
* ```
*/
filterUse: () => Promise | null>;
/**
* Быстрое отслеживание использования автоподсказок
*
* Упрощенный метод для отслеживания использования автоподсказок.
* Внутренне вызывает `trackFunctionUse` с функцией 'hint'.
*
* @example
* ```typescript
* // Быстрое отслеживание использования автоподсказок
* await analytics.quickTrack.hintUse()
* ```
*/
hintUse: () => Promise | null>;
/**
* Быстрое отслеживание использования истории
*
* Упрощенный метод для отслеживания использования истории поиска.
* Внутренне вызывает `trackFunctionUse` с функцией 'history'.
*
* @example
* ```typescript
* // Быстрое отслеживание использования истории
* await analytics.quickTrack.historyUse()
* ```
*/
historyUse: () => Promise | null>;
};
/** Очистить ошибку */
clearError: () => void;
};
//# sourceMappingURL=useAnalytics.d.ts.map