import { Product } from '../../../../api/commerce/common/product.js';
import { CommerceEngine, CommerceEngineState } from '../../../../app/commerce-engine/commerce-engine.js';
import { InteractiveResultCore, InteractiveResultCoreOptions as InteractiveProductCoreOptions, InteractiveResultCoreProps as InteractiveResultHeadlessCoreProps } from '../../../core/interactive-result/headless-core-interactive-result.js';
export interface InteractiveProductOptions extends InteractiveProductCoreOptions {
    /**
     * The product to log analytics for.
     */
    product: Product;
}
export interface InteractiveProductCoreProps extends InteractiveResultHeadlessCoreProps {
    /**
     * The options for the `InteractiveProduct` sub-controller.
     */
    options: InteractiveProductOptions;
    /**
     * The selector to fetch the response ID from the state.
     */
    responseIdSelector: (state: CommerceEngineState) => string;
}
export type InteractiveProductProps = Omit<InteractiveProductCoreProps, 'responseIdSelector'>;
/**
 * The `InteractiveProduct` sub-controller provides an interface for handling long presses, multiple clicks, etc. to ensure
 * analytics events are logged properly when a user selects a product.
 */
export interface InteractiveProduct extends InteractiveResultCore {
    warningMessage?: string;
}
/**
 * Creates an `InteractiveProduct` sub-controller instance.
 *
 * @param engine - The headless commerce engine.
 * @param props - The configurable `InteractiveProduct` properties.
 * @returns An `InteractiveProduct` sub-controller instance.
 *
 * @group Buildable controllers
 * @category CoreInteractiveProduct
 */
export declare function buildCoreInteractiveProduct(engine: CommerceEngine, props: InteractiveProductCoreProps): InteractiveProduct;
