import type { Controller, ControllerDefinitionsMap, EngineDefinition, InferControllerFromDefinition, InferControllerStaticStateMapFromDefinitionsWithSolutionType, InferControllersMapFromDefinition, SolutionType, CommerceEngine as SSRCommerceEngine } from '@coveo/headless/ssr-commerce'; import type { FunctionComponent, PropsWithChildren } from 'react'; export type ContextHydratedState, TSolutionType extends SolutionType> = { engine: SSRCommerceEngine; controllers: InferControllersMapFromDefinition; solutionType: TSolutionType; }; export type ContextState, TSolutionType extends SolutionType> = { engine?: SSRCommerceEngine; controllers: InferControllersMapFromDefinition | InferControllerStaticStateMapFromDefinitionsWithSolutionType; solutionType: TSolutionType; }; export type ControllerHook = () => { state: TController['state']; methods?: Omit; }; export type InferControllerHooksMapFromDefinition> = { [K in keyof TControllers as `use${Capitalize}`]: ControllerHook>; }; export type ReactEngineDefinition, TEngineOptions, TSolutionType extends SolutionType> = EngineDefinition & { /** * @deprecated Use `StateProvider` instead. */ StaticStateProvider: FunctionComponent; }>>; /** * @deprecated Use `StateProvider` instead. */ HydratedStateProvider: FunctionComponent; }>>; StateProvider: FunctionComponent | InferControllerStaticStateMapFromDefinitionsWithSolutionType; }>>; };