/**
 * Utility functions to be used for Commerce Server Side Rendering.
 */
import type { CommerceEngineOptions } from '../../../app/commerce-engine/commerce-engine.js';
import type { Controller } from '../../../controllers/controller/headless-controller.js';
import { type CommerceEngineDefinitionOptions } from '../factories/build-factory.js';
import { SolutionType } from '../types/controller-constants.js';
import type { ControllerDefinitionsMap } from '../types/controller-definitions.js';
import type { EngineDefinition } from '../types/engine.js';
export interface CommerceEngineDefinition<TControllers extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> extends EngineDefinition<TControllers, CommerceEngineOptions, TSolutionType> {
}
/**
 * Initializes a Commerce engine definition in SSR with given controllers definitions and commerce engine config.
 * @param options - The commerce engine definition
 * @returns Three utility functions to fetch the initial state of the engine in SSR, hydrate the state in CSR,
 *  and a build function that can be used for edge cases requiring more control.
 *
 * @group Engine
 */
export declare function defineCommerceEngine<TControllerDefinitions extends ControllerDefinitionsMap<Controller>>(options: CommerceEngineDefinitionOptions<TControllerDefinitions>): {
    listingEngineDefinition: CommerceEngineDefinition<TControllerDefinitions, SolutionType.listing>;
    searchEngineDefinition: CommerceEngineDefinition<TControllerDefinitions, SolutionType.search>;
    standaloneEngineDefinition: CommerceEngineDefinition<TControllerDefinitions, SolutionType.standalone>;
    recommendationEngineDefinition: CommerceEngineDefinition<TControllerDefinitions, SolutionType.recommendation>;
};
