/**
 * ItemCard – generic item tile (primitive)
 *
 * Domain-agnostic: works for docs, articles, products, or any hit with id, title,
 * optional description, image, url. Overridable via className/style. Use for
 * search results, section blocks, or any list; for e-commerce products use ProductCard.
 */
import React from "react";
import type { ActionButton } from "../primitives/ActionButtons";
import { type CardSurface } from "../../hooks/useCardAnalytics";
/** Generic item shape for ItemCard – compatible with ResultItem and most hit types */
export interface GenericItem {
    id: string;
    title: string;
    description?: string;
    image?: string;
    /** Multiple images for carousel/hover/thumbStrip */
    images?: string[];
    url?: string;
    /** Widget/display fields */
    primaryText?: string;
    secondaryText?: string;
    tertiaryText?: string;
    imageUrl?: string;
    [key: string]: unknown;
}
export type ImageDisplayVariant = "single" | "carousel" | "hover" | "thumbStrip" | "thumbList";
export interface ItemCardProps {
    item: GenericItem;
    /** Position in list (for analytics) */
    position?: number;
    onSelect?: () => void;
    className?: string;
    style?: React.CSSProperties;
    /** Render as link (anchor) when item.url is set; otherwise button */
    asLink?: boolean;
    /** When multiple images, use ImageDisplay with this variant */
    imageVariant?: ImageDisplayVariant;
    /** Layout direction: vertical (default) or horizontal (image left, content right) */
    layout?: "vertical" | "horizontal";
    /** 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;
    /**
     * Where this card is rendered. Drives V4 funnel attribution (Search
     * Impression + Object Clicked carry the same `surface`). Default
     * "results_page".
     */
    surface?: CardSurface;
    /** Object kind for V4 events. Defaults to "product". */
    objectType?: string;
    /**
     * Search session id. If omitted the underlying tracker resolves via
     * the producer-side 3-layer chain.
     */
    searchId?: string;
    /**
     * Master switch for V4 emission. When false, neither Search
     * Impression nor Object Clicked fire (onSelect still runs). Default
     * true. Requires `position` to be set (otherwise impression has no
     * meaningful payload).
     */
    trackingEnabled?: boolean;
}
export declare function ItemCard({ item, position, onSelect, className, style, asLink, imageVariant, layout, actionButtons, actionButtonsPosition, showActionLabels, surface, objectType, searchId, trackingEnabled, }: ItemCardProps): React.JSX.Element;
//# sourceMappingURL=ItemCard.d.ts.map