import { Action } from '@reduxjs/toolkit';
import { Controller } from '../../../controllers/controller/headless-controller.js';
import { CommerceEngine, CommerceEngineOptions } from '../../commerce-engine/commerce-engine.js';
import { ControllerDefinitionsMap, SolutionType } from '../types/common.js';
import { BuildParameters, CommerceControllerDefinitionsMap, EngineDefinitionOptions } from '../types/core-engine.js';
/**
 * The SSR commerce engine.
 *
 * @group Engine
 */
export interface SSRCommerceEngine extends CommerceEngine {
    /**
     * Waits for the request to be completed and returns a promise that resolves to an `Action`.
     */
    waitForRequestCompletedAction(): Promise<Action>[];
}
export type CommerceEngineDefinitionOptions<TControllers extends ControllerDefinitionsMap<Controller> = ControllerDefinitionsMap<Controller>> = EngineDefinitionOptions<CommerceEngineOptions, TControllers>;
export declare const buildFactory: <TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions | undefined, options: CommerceEngineDefinitionOptions<TControllerDefinitions>) => <T extends SolutionType>(solutionType: T) => (...[buildOptions]: BuildParameters<TControllerDefinitions>) => Promise<{
    engine: SSRCommerceEngine;
    controllers: import("../types/common.js").InferControllersMapFromDefinition<TControllerDefinitions, T>;
}>;
