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 parameter to specify the offset for pagination.
   * @returns {Promise<any>} A promise that resolves to the list of notifications.
   */
  export function getNotificationList(offset?: any): Promise<any>;

  /**
   * Retrieves the notification count for the user.
   * @returns {Promise<string>} A promise that resolves to the notification count as a string.
   */
  export function getNotificationCount(): Promise<string>;

  /**
   * Marks a notification as read.
   * @param notificationItem - The notification item to be marked as read.
   */
  export function markRead(notificationItem: any): void;

  /**
   * Marks a notification as unread.
   * @param notificationItem - The notification item to be marked as unread.
   */
  export function markUnread(notificationItem: any): void;

  /**
   * Tracks a click event on a notification.
   * @param notificationItem - The notification item that was clicked.
   */
  export function trackClick(notificationItem: any): void;

  /**
   * Tracks a view event for a notification.
   * @param notificationItem - The notification item that was viewed.
   */
  export function trackView(notificationItem: any): void;

  /**
   * Marks a notification for deletion.
   * @param notificationItem - The notification item to be deleted.
   */
  export function markDelete(notificationItem: any): 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: any[]): 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: any[]): void;

  /**
   * Deletes all notifications in the provided list.
   * @param list - The list of notifications to be deleted.
   */
  export function deleteAll(list: any[]): 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;
}
