/**
  * Provides you with a list of the app’s notifications that are still displayed in Notification Center.
  *
  * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getdeliverednotifications
  */
 static getDeliveredNotifications(
   callback: (notifications: Array<Object>) => void,
 ): void {
   RCTPushNotificationManager.getDeliveredNotifications(callback);
 }
  /**
   * Requests notification permissions from iOS, prompting the user's
   * dialog box. By default, it will request all notification permissions, but
   * a subset of these can be requested by passing a map of requested
   * permissions.
   * The following permissions are supported:
   *
   *   - `alert`
   *   - `badge`
   *   - `sound`
   *
   * If a map is provided to the method, only the permissions with truthy values
   * will be requested.

   * This method returns a promise that will resolve when the user accepts,
   * rejects, or if the permissions were previously rejected. The promise
   * resolves to the current state of the permission.
   */
  static requestPermissions(permissions?: {
    alert?: boolean,
    badge?: boolean,
    sound?: boolean
  }): Promise<{
    alert: boolean,
    badge: boolean,
    sound: boolean
  }> {
    var requestedPermissions = {};
    if (permissions) {
      requestedPermissions = {
        alert: !!permissions.alert,
        badge: !!permissions.badge,
        sound: !!permissions.sound
      };
    } else {
      requestedPermissions = {
        alert: true,
        badge: true,
        sound: true
      };
    }
    return RCTPushNotificationManager.requestPermissions(requestedPermissions);
  }
 /**
  * See what push permissions are currently enabled. `callback` will be
  * invoked with a `permissions` object:
  *
  *  - `alert` :boolean
  *  - `badge` :boolean
  *  - `sound` :boolean
  */
 static checkPermissions(callback: Function) {
   invariant(
     typeof callback === 'function',
     'Must provide a valid callback'
   );
   RCTPushNotificationManager.checkPermissions(callback);
 }
 /**
  * This method returns a promise that resolves to either the notification
  * object if the app was launched by a push notification, or `null` otherwise.
  *
  * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getinitialnotification
  */
 static getInitialNotification(): Promise<?PushNotificationIOS> {
   return RCTPushNotificationManager.getInitialNotification().then(
     notification => {
       return notification && new PushNotificationIOS(notification);
     },
   );
 }
 /**
  * Schedules the localNotification for immediate presentation.
  *
  * details is an object containing:
  *
  * - `alertBody` : The message displayed in the notification alert.
  * - `alertAction` : The "action" displayed beneath an actionable notification. Defaults to "view";
  * - `soundName` : The sound played when the notification is fired (optional).
  * - `category`  : The category of this notification, required for actionable notifications (optional).
  * - `userInfo`  : An optional object containing additional notification data.
  * - `applicationIconBadgeNumber` (optional) : The number to display as the app’s icon badge. The default value of this property is 0, which means that no badge is displayed.
  */
 static presentLocalNotification(details: Object) {
   RCTPushNotificationManager.presentLocalNotification(details);
   if (details.handler) {
     RCTDeviceEventEmitter.addListener(
       'localNotificationClicked',
       details.handler)
   }
 }
  /**
   * This method is available for remote notifications that have been received via:
   * `application:didReceiveRemoteNotification:fetchCompletionHandler:`
   * https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler:
   *
   * Call this to execute when the remote notification handling is complete. When
   * calling this block, pass in the fetch result value that best describes
   * the results of your operation. You *must* call this handler and should do so
   * as soon as possible. For a list of possible values, see `PushNotificationIOS.FetchResult`.
   *
   * If you do not call this method your background remote notifications could
   * be throttled, to read more about it see the above documentation link.
   */
  finish(fetchResult: FetchResult) {
    if (!this._isRemote || !this._notificationId || this._remoteNotificationCompleteCalllbackCalled) {
      return;
    }
    this._remoteNotificationCompleteCalllbackCalled = true;

    RCTPushNotificationManager.onFinishRemoteNotification(this._notificationId, fetchResult);
  }
 /**
  * Schedules the localNotification for immediate presentation.
  *
  * details is an object containing:
  *
  * - `alertBody` : The message displayed in the notification alert.
  * - `alertAction` : The "action" displayed beneath an actionable notification. Defaults to "view";
  * - `soundName` : The sound played when the notification is fired (optional).
  * - `category`  : The category of this notification, required for actionable notifications (optional).
  * - `userInfo`  : An optional object containing additional notification data.
  * - `applicationIconBadgeNumber` (optional) : The number to display as the app's icon badge. The default value of this property is 0, which means that no badge is displayed.
  */
 static presentLocalNotification(details: Object) {
   RCTPushNotificationManager.presentLocalNotification(details);
 }
 /**
  * Removes the specified notifications from Notification Center
  *
  * @param identifiers Array of notification identifiers
  */
 static removeDeliveredNotifications(identifiers: [string]): void {
   RCTPushNotificationManager.removeDeliveredNotifications(identifiers);
 }
 /**
  * Schedules the localNotification for future presentation.
  *
  * details is an object containing:
  *
  * - `fireDate` : The date and time when the system should deliver the notification.
  * - `alertBody` : The message displayed in the notification alert.
  * - `alertAction` : The "action" displayed beneath an actionable notification. Defaults to "view";
  * - `soundName` : The sound played when the notification is fired (optional).
  * - `category`  : The category of this notification, required for actionable notifications (optional).
  * - `userInfo` : An optional object containing additional notification data.
  * - `applicationIconBadgeNumber` (optional) : The number to display as the app's icon badge. Setting the number to 0 removes the icon badge.
  * - `repeatInterval` : The interval to repeat as a string.  Possible values: `minute`, `hour`, `day`, `week`, `month`, `year`.
  */
 static scheduleLocalNotification(details: Object) {
   RCTPushNotificationManager.scheduleLocalNotification(details);
 }
 /**
  * Unregister for all remote notifications received via Apple Push Notification service.
  *
  * You should call this method in rare circumstances only, such as when a new version of
  * the app removes support for all types of remote notifications. Users can temporarily
  * prevent apps from receiving remote notifications through the Notifications section of
  * the Settings app. Apps unregistered through this method can always re-register.
  */
 static abandonPermissions() {
   RCTPushNotificationManager.abandonPermissions();
 }
 /**
  * Cancel local notifications.
  *
  * Optionally restricts the set of canceled notifications to those
  * notifications whose `userInfo` fields match the corresponding fields
  * in the `userInfo` argument.
  */
 static cancelLocalNotifications(userInfo: Object) {
   RCTPushNotificationManager.cancelLocalNotifications(userInfo);
 }
 /**
  * Gets the local notifications that are currently scheduled.
  */
 static getScheduledLocalNotifications(callback: Function) {
   RCTPushNotificationManager.getScheduledLocalNotifications(callback);
 }
 /**
  * Gets the current badge number for the app icon on the home screen
  */
 static getApplicationIconBadgeNumber(callback: Function) {
   RCTPushNotificationManager.getApplicationIconBadgeNumber(callback);
 }
 /**
  * Sets the badge number for the app icon on the home screen
  */
 static setApplicationIconBadgeNumber(number: number) {
   RCTPushNotificationManager.setApplicationIconBadgeNumber(number);
 }
 /**
  * Cancels all scheduled localNotifications
  */
 static cancelAllLocalNotifications() {
   RCTPushNotificationManager.cancelAllLocalNotifications();
 }
 /**
  * Provides you with a list of the app’s notifications that are still displayed in Notification Center
  *
  * @param callback Function which receive an array of delivered notifications
  *
  *  A delivered notification is an object containing:
  *
  * - `identifier`  : The identifier of this notification.
  * - `title`  : The title of this notification.
  * - `body`  : The body of this notification.
  * - `category`  : The category of this notification, if has one.
  * - `userInfo`  : An optional object containing additional notification data.
  * - `thread-id`  : The thread identifier of this notification, if has one.
  */
 static getDeliveredNotifications(callback: (notifications: [Object]) => void): void {
   RCTPushNotificationManager.getDeliveredNotifications(callback);
 }
 /**
  * Remove all delivered notifications from Notification Center
  */
 static removeAllDeliveredNotifications(): void {
   RCTPushNotificationManager.removeAllDeliveredNotifications();
 }