import type { ItemDisplayBasicLayout, ItemDisplayDensity, ItemDisplayImageSize } from '@coveo/atomic/loader';
import type { Product } from '@coveo/headless/commerce';
import React, { type JSX } from 'react';
interface Template {
    contentTemplate: JSX.Element;
    linkTemplate: JSX.Element;
}
interface AtomicCommerceRecommendationListProps {
    /**
     * The spacing of various elements in the recommendation list, including the gap between products, the gap between parts of a product, and the font sizes of different parts in a product.
     */
    density?: ItemDisplayDensity;
    /**
     * The desired layout to use when displaying recommendations. Layouts affect how many products to display per row and how visually distinct they are from each other.
     */
    display?: ItemDisplayBasicLayout;
    /**
     * The expected size of the image displayed for recommendations.
     */
    imageSize?: ItemDisplayImageSize;
    /**
     * The desired number of placeholders to display while the recommendation list is loading.
     */
    numberOfPlaceholders?: number;
    slotId?: string;
    productsPerPage?: number;
}
/**
 * The properties of the AtomicCommerceRecommendationList component
 */
interface WrapperProps extends AtomicCommerceRecommendationListProps {
    /**
     * A template function that takes a result item and outputs its target rendering as a JSX element.
     * It can be used to conditionally render different type of result templates based on the properties of each result.
     */
    template: (result: Product) => JSX.Element | Template;
}
/**
 * This component serves as a wrapper for the core AtomicCommerceRecommendationList.
 *
 * @param props
 * @returns
 */
export declare const ListWrapper: React.FC<WrapperProps>;
export {};
