import type { AsyncThunkAction, PayloadAction } from '@reduxjs/toolkit'; import type { AsyncThunkCommerceOptions } from '../../../api/commerce/commerce-api-client.js'; import type { CommerceEngine } from '../../../app/commerce-engine/commerce-engine.js'; import { type FetchMoreRecommendationsPayload, type FetchRecommendationsPayload, type PromoteChildToParentPayload, type QueryRecommendationsCommerceAPIThunkReturn, type RegisterRecommendationsSlotPayload, type StateNeededByFetchRecommendations } from './recommendations-actions.js'; export type { FetchMoreRecommendationsPayload, FetchRecommendationsPayload, RegisterRecommendationsSlotPayload, }; /** * The recommendations action creators. * * @group Actions * @category Recommendations */ export interface RecommendationsActionCreator { /** * Fetches recommendations. * * @param payload - The action creator payload. * @returns A dispatchable action. */ fetchRecommendations(payload: FetchRecommendationsPayload): AsyncThunkAction>; /** * Fetches an additional page of recommendations and appends it to the current list. * * @param payload - The action creator payload. * @returns A dispatchable action. */ fetchMoreRecommendations(payload: FetchMoreRecommendationsPayload): AsyncThunkAction>; /** * Promotes a child product to a parent product. * * @param payload - The action creator payload. * @returns A dispatchable action. */ promoteChildToParent(payload: PromoteChildToParentPayload): PayloadAction; /** * Registers a recommendations slot. * * @param payload - The action creator payload. * @returns A dispatchable action. */ registerRecommendationsSlot(payload: RegisterRecommendationsSlotPayload): PayloadAction; } /** * Loads the commerce recommendations reducer and returns the available recommendations action creators. * * @param engine - The commerce engine. * @returns An object holding the recommendations action creators. * * @group Actions * @category Recommendations */ export declare function loadRecommendationsActions(engine: CommerceEngine): RecommendationsActionCreator;