export interface ImpressionMetadata { elementID: string; elementType: "product" | "promotile"; elementPosition: number; query?: string; categoryID?: string; pagenum?: number; sort_by?: string; narrow_by?: string; } export interface ImpressionRecord extends ImpressionMetadata { timestamp: number; isReported: boolean; } export interface ViewportImpressionTrackerConfig { threshold?: number; backupInterval?: number; onImpression?: (record: ImpressionRecord) => void; onReport?: (impressions: ImpressionRecord[]) => Promise; } export declare class ViewportImpressionTracker { private impressions; private observers; private observerMetadata; private reportingTimer; private hasReportedOnPageLeave; private config; private pageLeaveCleanup; constructor(config?: ViewportImpressionTrackerConfig); track(element: Element, metadata: ImpressionMetadata): void; untrack(element: Element): void; reportNow(): Promise; destroy(): void; private handleIntersection; private setupBackupTimer; private setupPageLeaveHandlers; }