import { KlevuQueryResult } from "../models/KlevuApiRawResponse.js";
import { KlevuFetchQueryResult } from "../models/KlevuFetchResponse.js";
import { KlevuResultEventOnResult } from "../models/KlevuResultEvent.js";
import { KlevuFetchFunctionReturnValue } from "../queries/index.js";
import { FilterManager } from "../store/filterManager.js";
import { KlevuKeywordUrlMap } from "../models/KMCMaps.js";
import { KlevuResponseObject } from "./responseObject.js";
/**
 * Result object for each query. A storage for results. Can be used to fetch more data, send events etc.
 */
export declare class KlevuResponseQueryObject {
    #private;
    /**
     * Original request response that includes all queries
     */
    responseObject: KlevuResponseObject;
    /**
     * This query
     */
    query: KlevuQueryResult;
    /**
     * Function used to create this query
     */
    func: KlevuFetchFunctionReturnValue;
    /**
     * Hooks that can be used to listen for events
     */
    hooks: KlevuResultEventOnResult[];
    /**
     * When query is search this is available. It is used to send search click events
     */
    searchClickEvent?: KlevuFetchQueryResult["searchClickEvent"];
    /**
     * When query is categoryMerchandising this is available. It is used to send categoryMerchandising click events
     */
    categoryMerchandisingClickEvent?: KlevuFetchQueryResult["categoryMerchandisingClickEvent"];
    /**
     * When query is recommendation this is available. It is used to send recommendation click events
     */
    recommendationClickEvent?: KlevuFetchQueryResult["recommendationClickEvent"];
    /**
     * When there is a banner in the recommendation this is available. It is used to send recommendation banner click events
     */
    recommendationBannerClickEvent?: KlevuFetchQueryResult["recommendationBannerClickEvent"];
    /**
     * Fetches redirects for this query. This is available only for search queries
     */
    getRedirects?: () => Promise<KlevuKeywordUrlMap[]>;
    constructor(responseObject: KlevuResponseObject, query: KlevuQueryResult, func: KlevuFetchFunctionReturnValue);
    /**
     * All filters related to this query
     */
    get filters(): (import("../models/KlevuApiRawResponse.js").KlevuFilterResultOptions | import("../models/KlevuApiRawResponse.js").KlevuFilterResultSlider | import("../models/KlevuApiRawResponse.js").KlevuFilterResultRating)[] | undefined;
    /**
     * Id if the query
     */
    get id(): string;
    /**
     * Meta data of the query
     */
    get meta(): {
        apiKey: string;
        isPersonalised: boolean;
        qTime: number;
        noOfResults: number;
        totalResultsFound: number;
        offset: number;
        typeOfSearch: import("../index.js").KlevuTypeOfSearch;
        debuggingInformation: unknown;
        notificationCode: number;
        searchedTerm: string;
        klevuImageData?: {
            processed: {
                urls: string[];
            }[];
        } | undefined;
        tags: string[];
    };
    /**
     * Records of the query
     */
    get records(): ({
        id: string;
    } & import("../index.js").KlevuRecord)[];
    /**
     * Special parameters that are saved to query
     */
    get functionParams(): import("../queries/index.js").KlevuFetchFunctionParams | undefined;
    /**
     * Fetches page of results. If pageIndex is not defined it will fetch next page.
     *
     * @param params
     * @returns
     */
    getPage(params?: {
        /**
         * Limit number of results for next query. By default this is automatically calculated from previous result
         */
        limit?: number;
        /**
         * Filter manager to apply for next function
         */
        filterManager?: FilterManager;
        /**
         * Use page index to load certain page instead of next available. 0 is first page
         */
        pageIndex?: number;
    }): Promise<KlevuResponseObject | undefined>;
    /**
     *
     * @returns true if there are more pages to fetch
     */
    hasNextPage(): boolean;
    /**
     *
     * @returns total number of pages
     */
    getTotalPages(): number;
    annotationsById(productId: string, languageCode: string): Promise<import("../models/KlevuFetchResponse.js").KlevuAnnotations | undefined>;
    /**
     * @returns List of banners that were received for this query
     * @param params in case of search query you need to specify location of search
     */
    getBanners(params?: {
        searchType?: "quicksearch" | "landingpage";
    }): Promise<import("../index.js").KlevuBanner[]>;
    /**
     * @returns List of params used in the query and the metadata that was generated during
     * the query. This is useful for example to fetching KMC metadata that was received
     * for recommendations query.
     */
    getQueryParameters(): import("../queries/index.js").KlevuFetchFunctionParams | undefined;
}
