import { AppType } from "./common"; import { Narrow, SortBy } from "./fullTextSearch"; export interface Report { eventName: EventName; data: T; targetURL?: string; time?: number; reportAppType?: AppType; callback?: ({}: { eventName: EventName; payload: any; }) => void; } export type EventName = "instantsearch-product" | "instantsearch-popular-search" | "instantsearch-category" | "search" | "collection" | "productFromSearch" | "productFromCollection" | "promoTileFromSearch" | "promoTileFromCollection" | "productFromRecommendation" | "productDirect" | "lookALikeViewSerp" | "quickViewSerp" | "lookALikeViewCollection" | "quickViewCollection" | "productFromLookALike" | "productFromQuickView" | "cartVisited" | "cartPerformed" | "collectionPreformedFromTurbolink" | "discoveryOpen" | "discoveryProductVisit" | "vsProductAddedToCart" | "galleryImageClicked" | "recommendationsProductsShown" | "quickViewWidget"; export interface ProductSeenAutocompleteData { query: string; productID: string; productQuery: string; } export interface CategorySeenAutocompleteData { query: string; categoryID: string; } export interface PopularSearchSeenAutocompleteData { term: string; query: string; } export interface ProductSeenSerpData { query: string; productID: string; position?: number; imageID?: string; } export interface PromotileSeenSerpData { query: string; productID: string; position?: number; imageID?: string; link: string; thumbnail: string; } export interface ProductSeenRecommendations { productID: string; sourceProductID: string; widget_id?: string; position?: number; } export interface ProductSeenFromLookALike { productID: string; originalProduct?: string; position?: number; } export interface ProductSeenCollectionData { collectionID: string; productID: string; position?: number; query?: string; imageID?: string; } export interface PromotileSeenCollectionData { collectionID: string; productID: string; position?: number; query?: string; imageID?: string; link: string; thumbnail: string; } export interface SearchPreformedData { query: string; narrowBy?: Narrow[]; sortBy?: SortBy; products?: string[]; pagenum?: string; rescount?: string; promoTiles?: PromotileEvent[]; } export interface PromotileEvent { id: number; name: string; link: string; thumbnail: string; } export interface CollectionPreformedData { categoryID: string; query?: string; narrowBy?: Narrow[]; sortBy?: SortBy; products?: string[]; pagenum?: string; rescount?: string; promoTiles?: PromotileEvent[]; fromTurboLink?: boolean; } export interface QuickViewSerpData { term: string; productID: string; position: number; } export interface QuickViewCollectionData { collectionID: string; productID: string; position: number; } export interface QuickViewWidgetData { widget_id: string; productID: string; position: number; } export interface PostLoadResponse { isp_token: string; variation_id?: string; location?: string; isp_segments_serving?: boolean; personalization_segment?: string; } export interface DirectProductViewData { productID: string; } export interface AddToCartData { productID?: string; }