/** * Cross-event recommendations — the buyer's read. * * The rail on an event page and the block on the checkout-success page both * come from here. The answer is already materialized and cached server-side, so * this is one indexed read; nothing on a buyer's path ever waits on a model. * * EVERY failure returns an empty list. A cross-sell rail is decoration on * somebody's event page — if it cannot load, the page renders without it and * nobody sees an error. */ /** Why a show is being recommended. Rendered to the buyer as the badge. */ export type RecommendationRule = 'performer' | 'genre' | 'weekday' | 'similar' | 'pin'; /** The surfaces a buyer can see. `email` is rendered server-side at send time. */ export type RecommendationSurface = 'event_page' | 'success'; export interface RecommendationCard { eventId: number; slot: number; rule: RecommendationRule; title: string; startsAt: string | null; timeZone: string; venueName: string; image?: string; url?: string; minPrice?: number; } /** * Fetches the recommendations for one event and surface. * * @param eventId - the event being viewed or bought * @param surface - which placement is asking * @param widgetKey - the embed key, when this render is inside a widget */ export declare function getRecommendations(eventId: number, surface?: RecommendationSurface, widgetKey?: string): Promise;