import type { Action } from '@reduxjs/toolkit';
import { type CommerceEngine, type CommerceEngineOptions } from '../../../app/commerce-engine/commerce-engine.js';
import type { Controller } from '../../../controllers/controller/headless-controller.js';
import { SolutionType } from '../types/controller-constants.js';
import type { ControllerDefinitionsMap } from '../types/controller-definitions.js';
import type { BuildParameters, CommerceControllerDefinitionsMap, EngineDefinitionOptions } from '../types/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/controller-inference.js").InferControllersMapFromDefinition<TControllerDefinitions, T>;
}>;
