import { type ProductListing, type ProductListingState } from '../../../../controllers/commerce/product-listing/headless-product-listing.js';
import { type Search } from '../../../../controllers/commerce/search/headless-search.js';
import type { ControllerDefinitionOption, SubControllerDefinitionWithoutProps } from '../../types/controller-definitions.js';
export type { Search, ProductListing, ProductListingState as ProductListState };
export type ProductList = Pick<ProductListing | Search, 'state' | 'subscribe' | 'interactiveProduct' | 'interactiveSpotlightContent' | 'promoteChildToParent'>;
/**
 * Options for configuring the `ProductList` controller.
 */
interface ProductListOptions {
    /**
     * When set to true, fills the `results` field rather than the `products` field
     * in the response. It may also include Spotlight Content in the results.
     * @default false
     */
    enableResults?: boolean;
}
/**
 * Defines a `ProductList` controller instance.
 * @group Definers
 *
 * @param options - The configurable `ProductList` controller options.
 * @returns The `ProductList` controller definition.
 */
export declare function defineProductList<TOptions extends ControllerDefinitionOption | undefined>(options?: TOptions & ProductListOptions): SubControllerDefinitionWithoutProps<ProductList, TOptions>;
