import { CSSProperties, FC, ReactNode } from 'react'; import { ViewabilityTrackerConfig } from '../types/analytics'; export interface AdMeshViewabilityTrackerProps { /** Product ID */ productId?: string; /** Offer ID */ offerId?: string; /** Agent ID */ agentId?: string; /** Recommendation ID (for exposure tracking) */ recommendationId: string; /** Exposure URL (for MRC-compliant exposure pixel firing) */ exposureUrl?: string; /** Session ID (for exposure tracking) */ sessionId?: string; /** Whether to fire exposure URL when ad becomes viewable (defaults to true) */ triggerExposureUrl?: boolean; /** Children to wrap with viewability tracking */ children: ReactNode; /** Custom viewability tracker configuration */ config?: Partial; /** CSS class name */ className?: string; /** Inline styles */ style?: CSSProperties; /** Callback when viewability state changes */ onViewabilityChange?: (isViewable: boolean) => void; /** Callback when ad becomes visible */ onVisible?: () => void; /** Callback when ad becomes viewable (meets MRC threshold) */ onViewable?: () => void; /** Callback when ad is clicked */ onClick?: () => void; } /** * AdMeshViewabilityTracker Component * * Wraps ad components with comprehensive MRC viewability tracking. * Automatically tracks: * - Viewability (50% visible for 1 second) * - Time metrics (time to viewable, total visible duration, etc.) * - Engagement metrics (hover, focus, clicks, scroll depth) * - Context metrics (device type, viewport size, ad position) * * @example * ```tsx * logger.log('Ad is viewable!')} * > * * * ``` */ export declare const AdMeshViewabilityTracker: FC; //# sourceMappingURL=AdMeshViewabilityTracker.d.ts.map