import type { ChildProduct } from '../../../api/commerce/common/product.js';
import type { SearchCommerceSuccessResponse } from '../../../api/commerce/search/response.js';
import { type UpdateQueryPayload } from '../query/query-actions.js';
import { type StateNeededByExecuteSearch } from './search-actions-thunk-processor.js';
export interface QuerySearchCommerceAPIThunkReturn {
    /** The successful response. */
    response: SearchCommerceSuccessResponse;
    /** The query that was executed. */
    queryExecuted: string;
    /** The original query expression that was received and automatically corrected. */
    originalQuery: string;
}
export interface PrepareForSearchWithQueryOptions {
    /**
     * Whether to clear all active query filters when the end user submits a new query from the search box.
     * Setting this option to "false" is not recommended & can lead to an increasing number of queries returning no results.
     */
    clearFilters: boolean;
}
interface FetchInstantProductsPayload {
    /**
     * The search box ID.
     */
    id: string;
    /**
     * The query for which instant products are retrieved.
     */
    q: string;
    /**
     * Number in milliseconds that cached products will be valid for. Set to 0 so that products never expire.
     */
    cacheTimeout?: number;
}
interface FetchInstantProductsThunkReturn {
    /** The successful response. */
    response: SearchCommerceSuccessResponse;
}
export declare const executeSearch: import("@reduxjs/toolkit").AsyncThunk<QuerySearchCommerceAPIThunkReturn, void, {
    state: StateNeededByExecuteSearch;
    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 declare const fetchMoreProducts: import("@reduxjs/toolkit").AsyncThunk<QuerySearchCommerceAPIThunkReturn | null, void, {
    state: StateNeededByExecuteSearch;
    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 PrepareForSearchWithQueryPayload = UpdateQueryPayload & PrepareForSearchWithQueryOptions;
export declare const prepareForSearchWithQuery: import("@reduxjs/toolkit").AsyncThunk<void, PrepareForSearchWithQueryPayload, {
    state: StateNeededByExecuteSearch;
    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 declare const fetchInstantProducts: import("@reduxjs/toolkit").AsyncThunk<FetchInstantProductsThunkReturn, FetchInstantProductsPayload, {
    state: StateNeededByExecuteSearch;
    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 interface PromoteChildToParentPayload {
    child: ChildProduct;
}
export declare const promoteChildToParent: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: PromoteChildToParentPayload], PromoteChildToParentPayload, "commerce/search/promoteChildToParent", never, never>;
export {};
