/**
 * useProductAnalytics — analytics event binding hook for custom components.
 *
 * Returns event handler props ready to spread onto any element, plus
 * imperative tracking methods. Phase 2b V4 pivot (SCRUM-259) rewires
 * the impression and click side-effects to go through the V4 batched
 * buffers from `<BufferProvider>` rather than emit per-card events.
 *
 * The legacy V3 `client.trackClick(itemId, position, context)` and the
 * hand-rolled `product.impression` / `product.click` events have been
 * removed — the new producer surface is array-shaped and the only
 * supported click helper is `trackObjectClicked({ object_ids: [...] })`,
 * accumulated by the click buffer.
 *
 * Variant select / add-to-cart / custom-event handlers retain their
 * existing `client.trackEvent(...)` payload shape because those events
 * are still single-payload (not batched). They are unchanged from
 * Phase 4c.
 */
import type { SeekoraClient, SearchContext } from "@seekora-ai/search-sdk";
import type { ProductItem, ProductVariant } from "@seekora-ai/ui-sdk-types";
export interface UseProductAnalyticsOptions {
    client: SeekoraClient;
    product: ProductItem;
    position?: number;
    section?: string;
    tabId?: string;
    query?: string;
    context?: SearchContext | Partial<SearchContext>;
    enabled?: boolean;
    /**
     * Search session id (search_id) for V4 batched events. When omitted,
     * impression and click recording short-circuit (the buffers can't
     * bucket them without a search_id); the consumer's onClick still fires.
     */
    searchId?: string;
    /**
     * V4 surface discriminator. Defaults to "results_page" — the most
     * common in-search context. Pass "recommendation_widget" /
     * "outside_search" on PDP rails, browse pages, etc. to route the
     * event into the outside-search buffer buckets.
     */
    surface?: "results_page" | "dropdown" | "recommendation_widget" | "outside_search";
}
export interface UseProductAnalyticsReturn {
    /** Spread onto any clickable element to track product click */
    clickProps: {
        onClick: (e?: React.MouseEvent) => void;
        "data-seekora-product-id": string;
        "data-seekora-position": number;
    };
    /** Spread onto any element to track variant selection */
    variantSelectProps: (optionName: string, value: string) => {
        onClick: (e?: React.MouseEvent) => void;
        "data-seekora-variant-option": string;
        "data-seekora-variant-value": string;
    };
    /** Spread onto any element to track add-to-cart */
    addToCartProps: (variant?: ProductVariant) => {
        onClick: (e?: React.MouseEvent) => void;
        "data-seekora-action": "add-to-cart";
    };
    /** Spread onto any element to track impression (uses IntersectionObserver) */
    impressionRef: React.RefCallback<HTMLElement>;
    /** Imperative: record a V4 click into the batched buffer */
    trackClick: () => void;
    /** Imperative: track variant select */
    trackVariantSelect: (optionName: string, value: string) => void;
    /** Imperative: track add to cart */
    trackAddToCart: (variant?: ProductVariant) => void;
    /** Imperative: track custom event with product context */
    trackCustomEvent: (eventName: string, metadata?: Record<string, any>) => void;
}
export declare function useProductAnalytics({ client, product, position, section, tabId, query, context, enabled, searchId, surface, }: UseProductAnalyticsOptions): UseProductAnalyticsReturn;
//# sourceMappingURL=useProductAnalytics.d.ts.map