import { Product } from "./fullTextSearch"; export interface Specs { sources: Source[]; maxSuggestions: number; collectionIDs?: string[]; categoriesIDs?: string[]; widgetID: string; } export type Source = "related_recent_products" | "related_purchase" | "related_views" | "related_cart" | "similar_products" | "related_recently_viewed" | "similar_products_by_attributes" | "similar_products_lookalike" | "related_top_products"; export type SRC_TYPES = "JSSDK" | "TAPCART_SDK"; export interface Widget { productID: string; widgetID: string; categoriesIDs: string[]; payload: Product[]; sources: string; title?: string; similarByAttributesTiers?: Record; } export type WidgetCallback = (response: RecommendationsResponse) => void; export interface RecommendationsResponse { action: "recommendations"; payload: Widget[]; } export interface RelatedResponse { widget_responses: WidgetResponse[]; } interface WidgetResponse { categories: null | string; from_product: number; sources: string; title: string; widget_id: string; products: Product[]; promoted_by_personalization?: number[]; similar_by_attributes_tiers?: Record; } export {};