import { PageType } from "../../commons/types/page-type"; import { Runner } from "../../commons/types/runner"; export declare type DataLayer = any[]; export declare type PageItem = any; /** * Current page info. * @export * @interface PageInfo */ export interface PageInfo { item: PageItem; pageType: PageType; } /** * Main event runner class. * * It sends a "session.ping" event whenever * the runner starts. * * @export * @abstract * @class EventRunner * @extends {Runner} */ export declare abstract class EventRunner extends Runner { /** * Do the setting up before the runner is * started by the bundle manager. * * @abstract * @memberof Runner */ start(): Promise; /** * Main runner method. * * @abstract * @return {Promise} * @memberof Runner */ protected run(): Promise; /** * Process specific items. Should be implemented * by subclasses if necessary. * * @protected * @param {PageItem} _item Current item. * @return {void} * @memberof EventRunner */ protected processItem(_item: PageItem): void; /** * Process biggy specific items, that sould * be common to all types of event runners. * * @private * @param {PageItem} item Current item. * @return {void} * @memberof EventRunner */ private processBiggyItem; /** * Intercept datalayer push method. * * Whenever the push method is called, process the incoming * datalayer before calling the old push method. * * @private * @memberof VTEXRunner */ private interceptPush; /** * Process current and incoming datalayer. * * @private * @param {DataLayer} dataLayer Datalayer to be processed. * @memberof VTEXRunner */ private processDataLayer; /** * Process any query string related events. * * @private * @memberof EventRunner */ private processQuery; }