/**
 * Suggestions Analytics Hook
 *
 * Provides analytics tracking for query suggestions components using
 * Analytics V3 event structure and schema/fields (event_name, event_ts,
 * correlation_id/search_id via context, and V3 top-level fields such as
 * original_query, position, section, clicked_item_id, click_type, tab_id,
 * suggestions_count, etc.). All events are sent via client.trackEvent(payload, context)
 * so the SDK can attach correlation_id, search_id, event_ts, orgcode, xstoreid.
 */
import type { SeekoraClient, SearchContext } from '@seekora-ai/search-sdk';
import type { SuggestionItem, ProductItem, SuggestionCategory, PopularBrand, FilteredTab, RecentSearch, TrendingSearch } from '@seekora-ai/ui-sdk-types';
export interface UseSuggestionsAnalyticsOptions {
    /** Seekora client instance */
    client: SeekoraClient;
    /** Enable analytics tracking */
    enabled?: boolean;
    /** Analytics tags to include with all events */
    analyticsTags?: string[];
    /** Debounce impression events (ms) */
    impressionDebounce?: number;
    /** Track suggestion impressions automatically */
    trackImpressions?: boolean;
    /** Track clicks automatically */
    trackClicks?: boolean;
    /** Optional search context (correlationId, searchId) to attach to events when available */
    context?: SearchContext | Partial<SearchContext>;
}
export interface SuggestionClickEventData {
    /** The clicked suggestion */
    suggestion: SuggestionItem;
    /** Position in the list (0-indexed) */
    position: number;
    /** Section where the suggestion appeared */
    section?: 'suggestions' | 'trending' | 'recent' | 'related';
    /** Original query that triggered suggestions */
    query?: string;
    /** Total suggestions shown */
    totalSuggestions?: number;
}
export interface ProductClickEventData {
    /** The clicked product */
    product: ProductItem;
    /** Position in the list (0-indexed) */
    position: number;
    /** Section where the product appeared */
    section?: 'products' | 'trending' | 'recommendations' | 'filtered_tab';
    /** Tab ID if from filtered tab */
    tabId?: string;
    /** Original query */
    query?: string;
}
export interface SuggestionImpressionEventData {
    /** Suggestions that were shown */
    suggestions: SuggestionItem[];
    /** Products that were shown */
    products?: ProductItem[];
    /** Categories that were shown */
    categories?: SuggestionCategory[];
    /** Brands that were shown */
    brands?: PopularBrand[];
    /** Original query */
    query: string;
    /** Timestamp when impressions occurred */
    timestamp: number;
}
export interface UseSuggestionsAnalyticsReturn {
    /** Track a suggestion click */
    trackSuggestionClick: (data: SuggestionClickEventData) => void;
    /** Track a product click from suggestions dropdown */
    trackProductClick: (data: ProductClickEventData) => void;
    /** Track a category click */
    trackCategoryClick: (category: SuggestionCategory, query?: string) => void;
    /** Track a brand click */
    trackBrandClick: (brand: PopularBrand, query?: string) => void;
    /** Track a tab selection */
    trackTabSelect: (tab: FilteredTab, query?: string) => void;
    /** Track recent search click */
    trackRecentSearchClick: (search: RecentSearch) => void;
    /** Track trending search click */
    trackTrendingClick: (trending: TrendingSearch, position: number) => void;
    /** Track suggestions impression */
    trackImpression: (data: SuggestionImpressionEventData) => void;
    /** Track search submission from suggestion */
    trackSearchSubmit: (query: string, fromSuggestion: boolean, suggestion?: SuggestionItem) => void;
    /** Track dropdown open */
    trackDropdownOpen: (query: string) => void;
    /** Track dropdown close */
    trackDropdownClose: (query: string, selectedSuggestion?: string) => void;
}
export declare function useSuggestionsAnalytics(options: UseSuggestionsAnalyticsOptions): UseSuggestionsAnalyticsReturn;
export default useSuggestionsAnalytics;
//# sourceMappingURL=useSuggestionsAnalytics.d.ts.map