export interface WENotificationMessage { id?: string; variationUtmDataDto?: unknown[]; message?: string; templateMode?: boolean; androidDetails?: { expandableDetails?: { style?: string; ratingScale?: number; message?: string; }; advancedCustomizations?: Record; }; iosDetails?: { expandableDetails?: { style?: string; ratingScale?: number; message?: string; }; secondaryCta?: { id?: string; name?: string; ctaDetails?: unknown[]; }; advancedCustomizations?: Record; }; variationType?: string; title?: string; experimentVariationStatus?: string; layoutType?: string; customizations?: { richTitle?: string; richMessage?: string; backgroundColor?: string; }; name?: string; sampling?: number; } export interface WENotificationItem { creationTime?: string; channelType?: string; childExperimentId?: string; experimentId?: string; scope?: string; category?: string; message?: WENotificationMessage; status?: "READ" | "UNREAD"; variationId?: string; childVariationId?: string; } export interface WENotificationListResponse { messageList: WENotificationItem[]; hasNext: boolean; } export interface WEError { error: string; } declare module "react-native" { interface NativeModulesStatic { WEInboxReact: { /** * Initialize WebEngage Notification Inbox * @description Must be called before using any other inbox methods */ initWENotificationInbox(): void; /** * Get notification list with optional offset * @param offset WENotificationItem for pagination offset (internally stringified to JSON) * @param callback Callback function with result and error */ getNotificationList(offset: WENotificationItem | null, callback: (result: { messageList: string; hasNext: boolean } | null, error: WEError | null) => void): void; /** * Get notification count for user * @param callback Callback function with count and error */ getNotificationCount(callback: (result: string | null, error: WEError | null) => void): void; /** * Mark notification as read * @param notificationItem Notification item to mark as read */ markRead(notificationItem: WENotificationItem): void; /** * Mark notification as unread * @param notificationItem Notification item to mark as unread */ markUnread(notificationItem: WENotificationItem): void; /** * Track click event on notification * @param notificationItem Notification item that was clicked */ trackClick(notificationItem: WENotificationItem): void; /** * Track view event for notification * @param notificationItem Notification item that was viewed */ trackView(notificationItem: WENotificationItem): void; /** * Mark notification for deletion * @param notificationItem Notification item to delete */ markDelete(notificationItem: WENotificationItem): void; /** * Mark all notifications as read * @param notificationList Array of notifications to mark as read */ readAll(notificationList: WENotificationItem[]): void; /** * Mark all notifications as unread * @param notificationList Array of notifications to mark as unread */ unReadAll(notificationList: WENotificationItem[]): void; /** * Delete all notifications * @param notificationList Array of notifications to delete */ deleteAll(notificationList: WENotificationItem[]): void; /** * Reset notification count * @description Called when notification icon is clicked */ onNotificationIconClick(): void; }; } } // TurboModule interface for new architecture export interface NativeWEInboxModule { /** Initialize WebEngage Notification Inbox */ initWENotificationInbox(): void; /** Get notification list (offset internally stringified to JSON) */ getNotificationList(offset: WENotificationItem | null, callback: (result: { messageList: string; hasNext: boolean } | null, error: WEError | null) => void): void; /** Get notification count */ getNotificationCount(callback: (result: string | null, error: WEError | null) => void): void; /** Mark notification as read */ markRead(notificationItem: WENotificationItem): void; /** Mark notification as unread */ markUnread(notificationItem: WENotificationItem): void; /** Track click event */ trackClick(notificationItem: WENotificationItem): void; /** Track view event */ trackView(notificationItem: WENotificationItem): void; /** Mark notification for deletion */ markDelete(notificationItem: WENotificationItem): void; /** Mark all as read */ readAll(notificationList: WENotificationItem[]): void; /** Mark all as unread */ unReadAll(notificationList: WENotificationItem[]): void; /** Delete all notifications */ deleteAll(notificationList: WENotificationItem[]): void; /** Reset notification count */ onNotificationIconClick(): void; } declare module "react-native-webengage-inbox" { /** * Initializes the WebEngage Notification Inbox. * This function should be called before using other inbox functions. */ export function initWENotificationInbox(): void; /** * Retrieves the list of notifications. * @param offset - Optional WENotificationItem to use as offset for pagination. * @returns {Promise} A promise that resolves to the list of notifications. */ export function getNotificationList(offset?: WENotificationItem | null): Promise; /** * Retrieves the notification count for the user. * @returns {Promise} A promise that resolves to the notification count. */ export function getNotificationCount(): Promise; /** * Marks a notification as read. * @param notificationItem - The notification item to be marked as read. */ export function markRead(notificationItem: WENotificationItem): void; /** * Marks a notification as unread. * @param notificationItem - The notification item to be marked as unread. */ export function markUnread(notificationItem: WENotificationItem): void; /** * Tracks a click event on a notification. * @param notificationItem - The notification item that was clicked. */ export function trackClick(notificationItem: WENotificationItem): void; /** * Tracks a view event for a notification. * @param notificationItem - The notification item that was viewed. */ export function trackView(notificationItem: WENotificationItem): void; /** * Marks a notification for deletion. * @param notificationItem - The notification item to be deleted. */ export function markDelete(notificationItem: WENotificationItem): void; /** * Marks all notifications in the provided list as read. * @param list - The list of notifications to be marked as read. */ export function readAll(list: WENotificationItem[]): void; /** * Marks all notifications in the provided list as unread. * @param list - The list of notifications to be marked as unread. */ export function unReadAll(list: WENotificationItem[]): void; /** * Deletes all notifications in the provided list. * @param list - The list of notifications to be deleted. */ export function deleteAll(list: WENotificationItem[]): void; /** * Resets the notification count. * This function should be called to reset the count displayed in the UI. */ export function resetNotificationCount(): void; /** * Enables developer mode for debugging purposes. * This mode can provide additional logging and information during development. */ export function enableDevMode(): void; }