/** * **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