import { EventRunner, PageInfo, PageItem } from "../../event/core/event-runner"; import { CartEvent } from "../types/base/cart-event"; /** * Specific runner used by VTEX stores. * * @class VTEXRunner * @implements {Runner} */ export declare class VTEXRunner extends EventRunner { /** * Process DataLayer item. * * @protected * @param {*} item Current item. * @memberof VTEXRunner */ protected processItem(item: PageItem): void; /** * Get current page info based on DataLayer. * * @protected * @param {PageItem} item Current item. * @return {PageInfo} Current page info. * @memberof VTEXRunner */ protected getPageInfo(item: PageItem): PageInfo; /** * Send order event, based on a order item. * * @protected * @param {*} orderItem Order item from the DataLayer. * @memberof VTEXRunner */ protected sendOrderEvent(orderItem: PageItem): void; /** * Send cart event, based on a cart item. * * @protected * @param {*} cartItem Cart item from the DataLayer. * @memberof VTEXRunner */ protected sendCartEvent(cartItem: PageItem): void; /** * Get layer products from specific event key. * * VTEX has 3 specific keys when working with cart items on * the dataLayer. * * When products are added, they send the `ADDTOCART` event, * when they are removed `REMOVEFROMCART` and when they are * sending the full basket, they use the `CART` event. * * Whenever this events are sent, they come with an `ecommerce` * object, inside it, there is a key with the products array, * the key name follows the following rule: * * - When event is `ADDTOCART`, the key is `add`. * - When event is `REMOVEFROMCART`, the key is `remove`. * - When event is `CART`, the key is `checkout`. * * @protected * @param {string} event Current event name. * @return {string} Event related key. * @memberof VTEXRunner */ protected getCartProductsKeyFromEvent(event: string): string; /** * Create a generic cart event. * * @protected * @param {string} event Current event name. * @return {CartEvent} Relevant cart event. * @memberof VTEXRunner */ protected createCartEvent(event: string): CartEvent; }