/**
 * ProductCard – one product tile (primitive)
 *
 * Without displayConfig: renders the original minimal layout (image, title, price).
 * With displayConfig: renders layout variants (minimal, standard, detailed, compact, horizontal).
 */
import React from "react";
import type { ActionButton } from "../primitives/ActionButtons";
import type { ProductItem } from "@seekora-ai/ui-sdk-types";
import type { ProductDisplayConfig } from "../suggestions/types";
import { type CardSurface } from "../../hooks/useCardAnalytics";
export type ProductCardImageVariant = "single" | "carousel" | "hover" | "thumbStrip" | "thumbList";
export interface ProductCardProps {
    product: ProductItem;
    position: number;
    section?: string;
    tabId?: string;
    onSelect: () => void;
    className?: string;
    style?: React.CSSProperties;
    imageVariant?: ProductCardImageVariant;
    /** Product display configuration for layout variants */
    displayConfig?: ProductDisplayConfig;
    /** Callback when a variant swatch is hovered (e.g., to swap card image) */
    onVariantHover?: (optionName: string, value: string) => void;
    /** Callback when a variant swatch is clicked (e.g., to swap card image permanently) */
    onVariantClick?: (optionName: string, value: string) => void;
    /** Currently selected variant values (e.g., { Color: 'Black', Size: 'M' }) */
    selectedVariants?: Record<string, string>;
    /** Render as link when true and product.url exists */
    asLink?: boolean;
    /** Action buttons (add to cart, wishlist, etc.) */
    actionButtons?: ActionButton[];
    /** Action buttons position */
    actionButtonsPosition?: "overlay-top-right" | "overlay-bottom" | "inline";
    /** Show action button labels */
    showActionLabels?: boolean;
    /** Enable image zoom functionality */
    enableImageZoom?: boolean;
    /** Image zoom mode: 'hover' (Amazon-style), 'lens', 'click' (lightbox), 'both' (hover + click) */
    imageZoomMode?: "hover" | "lens" | "click" | "both";
    /** Image zoom magnification level (2 = 200%, 3 = 300%) */
    imageZoomLevel?: number;
    /**
     * Where this card is rendered. Drives downstream V4 funnel attribution
     * (Search Impression + Object Clicked carry the same `surface` field).
     * Defaults to "results_page".
     */
    surface?: CardSurface;
    /**
     * Object kind for V4 events. Defaults to "product". Override only when
     * ProductCard is reused for non-product domains (rare).
     */
    objectType?: string;
    /**
     * Search session id to stamp on V4 events. When omitted, resolved from
     * the producer-side 3-layer chain (in-memory active_search_id ->
     * sessionStorage -> URL `?seekora_sid`).
     */
    searchId?: string;
    /**
     * Master switch for V4 analytics emission. When `false`, neither
     * `Search Impression` nor `Object Clicked` events fire (the consumer's
     * onSelect still runs on click). Defaults to `true`. Set to false when
     * the card is rendered outside a search/discovery context where the
     * search-attribution semantics don't apply.
     */
    trackingEnabled?: boolean;
}
export declare function ProductCard({ product, position, section, tabId, onSelect, className, style, imageVariant, displayConfig, onVariantHover, onVariantClick, selectedVariants, asLink, actionButtons, actionButtonsPosition, showActionLabels, enableImageZoom, imageZoomMode, imageZoomLevel, surface, objectType, searchId, trackingEnabled, }: ProductCardProps): React.JSX.Element;
//# sourceMappingURL=ProductCard.d.ts.map