import { KlevuKMCRecommendations, KlevuTypeOfSearch } from "../index.js";
export type V1SearchEvent = {
    /**
     * This is your Klevu JS API Key.
     */
    klevu_apiKey: string;
    /**
     * This is the term being searched. For example iphone 5s.
     */
    klevu_term: string;
    /**
     * This is the total number of results returned for the searched term. It must
     * be an integer (e.g. 5)
     */
    klevu_totalResults: number;
    /**
     * IP address of the shopper who searched a term. If calling from javascript
     * (i.e. an ajax call), this is an optional parameter.
     */
    klevu_shopperIP?: string;
    /**
     * Country of the shopper who bought the product(s).
     */
    klevu_country?: string;
    /**
     * city of the shopper who bought the product(s).
     */
    klevu_city?: string;
    /**
     * When you receive a response for a search query, look at the value of the
     * typeOfQuery element under the metaData section (e.g. WILDCARD_AND,
     * FUZZY_AND). You need to pass this value to this parameter.
     */
    klevu_typeOfQuery: KlevuTypeOfSearch;
    /** Currently active filters in the last request */
    klevu_activeFilters?: string;
    klevu_shopperIP_v4?: string;
    klevu_shopperIP_v6?: string;
    data_protection?: boolean;
    klevu_uuid?: string;
    tags: string[];
};
export declare function KlevuEventV1Search(event: V1SearchEvent): Promise<unknown>;
export type V1ProductTrackingEvent = {
    /**
     * 	This is your Klevu JS API Key.
     */
    klevu_apiKey: string;
    /**
     * 	This is the term being searched. For example iphone 5s.
     */
    klevu_keywords?: string;
    /**
     * 	Here, the value must be clicked.
     */
    klevu_type: "clicked";
    /**
     * 	This is the Klevu ID of the clicked product. eg. 54321-12345.
     */
    klevu_productId: string;
    /**
     * 	This is the parent ID of the clicked product. eg. 54321. For compound
     * 	products with a parent and multiple child/variant products, this is the
     * 	common ID which ties the products together. For simple products, please
     * 	specify the same as klevu_productId.
     */
    klevu_productGroupId: string;
    /**
     * 	This is the child/variant ID of the clicked product. eg. 12345. For
     * 	compound products with a parent and multiple child/variant products, this
     * 	is the ID of the specific variant. For simple products, please specify the
     * 	same as klevu_productId.
     */
    klevu_productVariantId: string;
    /**
     * 	This is the product name of the clicked product.
     */
    klevu_productName: string;
    /**
     * 	This is the product URL of the clicked product.
     */
    klevu_productUrl: string;
    /**
     * 	IP address of the shopper who clicked on a product. If calling from
     * 	javascript (i.e. an ajax call), this is an optional parameter.
     */
    klevu_shopperIP?: string;
    /**
     * Country of the shopper who bought the product(s).
     */
    klevu_country?: string;
    /**
     * city of the shopper who bought the product(s).
     */
    klevu_city?: string;
    /**
     * The unique identifier of the A/B Test.
     */
    klevu_abTestId?: string;
    /**
     * The unique identifier of the A/B Test Variant.
     */
    klevu_abTestVariantId?: string;
    /** Currently active filters in the last request */
    klevu_activeFilters?: string;
    klevu_shopperIP_v4?: string;
    klevu_shopperIP_v6?: string;
    data_protection?: boolean;
    klevu_uuid?: string;
    tags: string[];
};
export declare function KlevuEventV1ProductTracking(event: V1ProductTrackingEvent): Promise<unknown>;
export type V2EventBase = {
    event: "order_purchase" | "view_recs_list" | "select_recs_list";
    event_version: "1.0.0";
    /**
     * Your Klevu JS Api Key, eg. klevu-12345.
     */
    event_apikey: string;
    /**
     * The optional json object that holds the user related information such as ip_address, email.
     */
    user_profile?: {
        /**
         * IP address of the shopper who purchased the product. If calling from javascript (i.e. an ajax call), this is an optional parameter.
         */
        ip_address?: string;
        /**
         * Email id of the shopper who purchased the product.
         */
        email?: string;
        ip_address_v4?: string;
        ip_address_v6?: string;
        data_protection?: boolean;
        klevu_uuid?: string;
    };
};
export type V2CheckedOutProductsEvent = V2EventBase & {
    event: "order_purchase";
    event_data: {
        /**
         * Depending on the number of orders, the item array accepts single or more orders.
         */
        items: Array<{
            /**
             * The unique identifier for your orders.
             */
            order_id?: string;
            /**
             * The unique identifier for reference to a line on an order within the database.
             */
            order_line_id?: string;
            /**
             * The name of the product.
             */
            item_name: string;
            /**
             * The full ID of the product. eg. 12345-54321. This will match the unique value used in your data sync process with Klevu. For compound products consisting of a child/variant and a parent, this is usually parentId-childId.
             */
            item_id: string;
            /**
             * The Parent ID of the product. eg. 12345. For compound products consisting of a child/variant and a parent, please specify the ID of the parent. For simple products, please re-use the same value as item_id
             */
            item_group_id: string;
            /**
             * The Child ID of the product.eg. 54321. Please specify the ID of the child/variant product. For simple products, please re-use the same value as item_id.
             */
            item_variant_id: string;
            /**
             * The final selling price of the product, for example 123.45
             */
            unit_price: number;
            /**
             * The currency of the above price, eg. USD.
             */
            currency: string;
            /**
             * The number of units sold for a product. In case if the parameter is mising, the default value will be 1
             */
            units?: number;
        }>;
    };
};
export declare function KlevuEventV2CheckedOutProducts(event: V2CheckedOutProductsEvent): Promise<unknown>;
export type KlevuV1CategoryProductsView = {
    /**
     * This is your Klevu JS API Key.
     */
    klevu_apiKey: string;
    /**
     * This is the name of the category being visited. For example, Stackable
     * Rings. The name should not include parent categories.
     */
    klevu_categoryName: string;
    /**  This is the complete hierarchy of the category being visited. For
     * example, Jewellery;Rings;Stackable Rings. Please note the use of a
     * semicolon as the separator between a parent and a child category. */
    klevu_categoryPath: string;
    /**  Comma separated list of product IDs being shown on the current page of
     *the category page. For example, P1,P2,P3,P4,P5…
     *
     *All the product IDs listed here are treated as impressions for these
     *products.
     */
    klevu_productIds: string;
    /**
     * Offset of the first product being shown on this page. For example, if you
     * are displaying 30 products per page and if a customer is on the 2nd page,
     * the value here should be 30. If on the 3rd page, it will be 60.
     */
    klevu_pageStartsFrom?: number;
    /**
     * IP address of the shopper who bought the product(s).
     */
    klevu_shopperIP?: string;
    /**
     * Country of the shopper who bought the product(s).
     */
    klevu_country?: string;
    /**
     * city of the shopper who bought the product(s).
     */
    klevu_city?: string;
    /** The unique identifier of the A/B Test. */
    klevu_abTestId?: string;
    /** The unique identifier of the A/B Test Variant. */
    klevu_abTestVariantId?: string;
    /** The active filters */
    klevu_activeFilters?: string;
    klevu_shopperIP_v4?: string;
    klevu_shopperIP_v6?: string;
    data_protection?: boolean;
    klevu_uuid?: string;
};
export declare function KlevuEventV1CategoryView(event: KlevuV1CategoryProductsView): Promise<unknown>;
export type KlevuV1CategoryProductsClick = {
    /**This is your Klevu JS API Key. */
    klevu_apiKey: string;
    /**
     * This is the name of the category being visited. For example, Stackable
     * Rings. The name should not include parent categories.
     */
    klevu_categoryName: string;
    /**
     * This is the complete hierarchy of the category being visited. For example,
     * Jewellery;Rings;Stackable Rings. Please note the use of a semicolon as the
     * separator between a parent and a child category.
     */
    klevu_categoryPath: string;
    /**
     * This is the Klevu ID of the clicked product. eg. 54321-12345.
     */
    klevu_productId: string;
    /**
     * This is the parent ID of the clicked product. eg. 54321. For compound
     * products with a parent and multiple child/variant products, this is the
     * common ID which ties the products together. For simple products, please
     * specify the same as klevu_productId.
     */
    klevu_productGroupId: string;
    /**
     * This is the child/variant ID of the clicked product. eg. 12345. For
     * compound products with a parent and multiple child/variant products, this
     * is the ID of the specific variant. For simple products, please specify the
     * same as klevu_productId. */
    klevu_productVariantId: string;
    /** Name of the product that was clicked. */
    klevu_productName?: string;
    /** URL of the product that was clicked. */
    klevu_productUrl?: string;
    /** SKU code of the product that was clicked. */
    klevu_productSku?: string;
    /** Decimal sale price of the product that was clicked. */
    klevu_salePrice?: string;
    /** A decimal rating value between 0 and 5 of the product that was clicked. */
    klevu_productRatings?: number;
    /**
     * Position of the product on the category page when it was clicked. For
     * example, the value would be 0 if it is the first product on the first page.
     * The value will be 30, if it is the first product on the 2nd page with 30
     * products being displayed per page.
     */
    klevu_productPosition?: number;
    /** IP address of the shopper who clicked the product(s). */
    klevu_shopperIP?: string;
    /**
     * Country of the shopper who bought the product(s).
     */
    klevu_country?: string;
    /**
     * city of the shopper who bought the product(s).
     */
    klevu_city?: string;
    /** The unique identifier of the A/B Test. */
    klevu_abTestId?: string;
    /** The unique identifier of the A/B Test Variant. */
    klevu_abTestVariantId?: string;
    /** The active filters */
    klevu_activeFilters?: string;
    klevu_shopperIP_v4?: string;
    klevu_shopperIP_v6?: string;
    data_protection?: boolean;
    klevu_uuid?: string;
};
export declare function KlevuEventV1CategoryProductClick(event: KlevuV1CategoryProductsClick): Promise<unknown>;
export type KlevuV1ImageBannerClick = {
    klevu_apiKey: string;
    klevu_term: string;
    klevu_bannerId: string;
    klevu_bannerName: string;
    klevu_image: string;
    klevu_target: string;
    klevu_request: "click";
    type: "banner";
};
export declare function KlevuEventV1BannerClick(event: KlevuV1ImageBannerClick): Promise<unknown>;
export type KlevuEventV2DataStaticContent = {
    /**
     * The type of content. Currently only image is supported
     */
    content_type: "image";
    /**
     * Which resolution of the banner is used
     */
    resolution: "desktop" | "mobile";
    /**
     * URL of the banner
     */
    banner_image_url: string;
    /**
     * Alt text of the banner
     */
    banner_alt_tag: string;
    /**
     * The order of the product in the listing, starting from 1.
     */
    index: number;
};
export type KlevuRecommendationsEventV2Data = V2EventBase & {
    /**
     * Please use the appropriate value for each event type, detailed within each
     * section below. eg. view_recs_list.
     */
    event: "view_recs_list" | "select_recs_list";
    event_data?: {
        /**
         * The unique identifier for your KMC Recommendations Banner, eg. 12345-abcde.
         * This is available in the banner configuration metadata as recsKey. If you
         * are not using banners configured within the KMC, please specify a unique
         * identifier for the banner which will be used to distinguish one banner from
         * another.
         */
        list_id: string;
        /**
         * The name of the banner, eg. New Arrivals. This is available in the banner
         * configuration metadata as title.
         */
        list_name: string;
        /**
         * The logic type of the banner, eg. NEWEST_ARRIVALS. This is available in the
         * banner configuration metadata as logic.
         */
        list_logic: string;
        /**
         * This can be used to specify additional information about the event, which
         * will eventually be made available within the KMC. We recommend you specify
         * the type of page, eg. HOME. This is available in the banner configuration
         * metadata as pageType.
         */
        tags?: string[];
        /**
         * In case of banners metadata includes spot id.
         */
        spot_id?: string;
        /**
         * In case of banners metadata includes spot name.
         */
        spot_name?: string;
        /**
         * When segmentation is used
         */
        segment_id?: string;
        segment_name?: string;
        /**
         * When static banner is used this needs to be fined
         */
        action?: KlevuKMCRecommendations["metadata"]["action"];
        static_content?: Array<KlevuEventV2DataStaticContent>;
        /**
         * Depending on the event type, you will either detail a single item or
         * multiple items here.
         */
        items?: Array<{
            /**
             * The full ID of the product. eg. 12345-54321. This will match the unique
             * value used in your data sync process with Klevu. For compound products
             * consisting of a child/variant and a parent, this is usually
             * parentId-childId.
             */
            item_id: string;
            /**
             * The Parent ID of the product. eg. 12345. For compound products consisting
             * of a child/variant and a parent, please specify the ID of the parent. For
             * simple products, please re-use the same value as item_id.
             */
            item_group_id: string;
            /**
             * The Child ID of the product.eg. 54321. Please specify the ID of the
             * child/variant product. For simple products, please re-use the same value
             * as item_id.
             */
            item_variant_id: string;
            /**
             * The name of the product.
             */
            item_name: string;
            /**
             * The final selling price of the product, for example 123.45.
             */
            price: string;
            /**
             * The currency of the above price, eg. USD.
             */
            currency?: string;
            /**
             * The brand of the product, for example "Nike" or "Acme".
             */
            item_brand?: string;
            /**
             * The category the item belongs to. For nested categories, use the ;
             * character to separate the hierarchy, and for multiple categories use a
             * double ;;. For example, for 'Mens > Shoes > Trainers' and 'Sale' you
             * would specify: Mens;Shoes;Trainers;;Sale.
             */
            item_category?: string;
            /**
             * he order of the product in the listing, starting from 1.
             */
            index: number;
        }>;
    };
    user_profile: {
        sessionId?: string;
    };
};
export declare function KlevuEventV2(data: KlevuRecommendationsEventV2Data[]): Promise<unknown>;
export declare function runPendingAnalyticalRequests(): Promise<void>;
