import type { AtomicCommerceProductList } from '@coveo/atomic/components';
import type { Product } from '@coveo/headless/commerce';
import React, { type JSX } from 'react';
interface Template {
    contentTemplate: JSX.Element;
    linkTemplate: JSX.Element;
}
interface AtomicCommerceProductListProps {
    /**
     * The spacing of various elements in the product list, including the gap between products, the gap between parts of a product, and the font sizes of different parts in a product.
     */
    density?: AtomicCommerceProductList['density'];
    /**
     * The desired layout to use when displaying products. Layouts affect how many products to display per row and how visually distinct they are from each other.
     */
    display?: AtomicCommerceProductList['display'];
    /**
     * The expected size of the image displayed for products.
     */
    imageSize?: AtomicCommerceProductList['imageSize'];
    /**
     * The desired number of placeholders to display while the product list is loading.
     */
    numberOfPlaceholders?: number;
}
/**
 * The properties of the AtomicCommerceProductList component
 */
interface WrapperProps extends AtomicCommerceProductListProps {
    /**
     * 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 AtomicCommerceProductList.
 *
 * @param props
 * @returns
 */
export declare const ListWrapper: React.FC<WrapperProps>;
export {};
