import type { ChildProduct } from '../../../api/commerce/common/product.js';
import type { RecommendationsCommerceSuccessResponse } from '../../../api/commerce/recommendations/recommendations-response.js';
import type { RecommendationsSection } from '../../../state/state-sections.js';
import { type StateNeededForPaginatedCommerceAPIRequest } from '../common/paginated-commerce-api-request-builder.js';
export interface QueryRecommendationsCommerceAPIThunkReturn {
    /** The successful recommendations response. */
    response: RecommendationsCommerceSuccessResponse;
}
export type StateNeededByFetchRecommendations = StateNeededForPaginatedCommerceAPIRequest & RecommendationsSection;
export interface FetchRecommendationsPayload {
    /**
     * The unique identifier of the recommendations slot (e.g., `b953ab2e-022b-4de4-903f-68b2c0682942`).
     */
    slotId: string;
    productId?: string;
}
export declare const fetchRecommendations: import("@reduxjs/toolkit").AsyncThunk<QueryRecommendationsCommerceAPIThunkReturn, FetchRecommendationsPayload, {
    state: StateNeededByFetchRecommendations;
    rejectValue: import("../../../api/commerce/commerce-api-error-response.js").CommerceAPIErrorStatusResponse;
    extra: import("../../../app/commerce-thunk-extra-arguments.js").CommerceThunkExtraArguments;
    dispatch?: import("redux-thunk").ThunkDispatch<unknown, unknown, import("redux").UnknownAction> | undefined;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export type FetchMoreRecommendationsPayload = FetchRecommendationsPayload;
export declare const fetchMoreRecommendations: import("@reduxjs/toolkit").AsyncThunk<QueryRecommendationsCommerceAPIThunkReturn | null, FetchRecommendationsPayload, {
    state: StateNeededByFetchRecommendations;
    rejectValue: import("../../../api/commerce/commerce-api-error-response.js").CommerceAPIErrorStatusResponse;
    extra: import("../../../app/commerce-thunk-extra-arguments.js").CommerceThunkExtraArguments;
    dispatch?: import("redux-thunk").ThunkDispatch<unknown, unknown, import("redux").UnknownAction> | undefined;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
interface SlotIdPayload {
    slotId: string;
    productId?: string;
}
export type RegisterRecommendationsSlotPayload = SlotIdPayload;
export declare const registerRecommendationsSlot: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: SlotIdPayload], SlotIdPayload, "commerce/recommendations/registerSlot", never, never>;
export interface PromoteChildToParentPayload extends SlotIdPayload {
    child: ChildProduct;
}
export declare const promoteChildToParent: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: PromoteChildToParentPayload], PromoteChildToParentPayload, "commerce/recommendations/promoteChildToParent", never, never>;
export {};
