module.exports = {
  AIRGoogleMapCalloutManager: {},
  AIRGoogleMapCalloutSubviewManager: {},
  AIRGoogleMapCircleManager: {},
  AIRGoogleMapManager: {
    getConstants: { type: 'function' },
    legalNotice: { type: 'string' },
    animateCamera: { type: 'function', functionType: 'async' },
    animateToBearing: { type: 'function', functionType: 'async' },
    animateToCoordinate: { type: 'function', functionType: 'async' },
    animateToNavigation: { type: 'function', functionType: 'async' },
    animateToRegion: { type: 'function', functionType: 'async' },
    animateToViewingAngle: { type: 'function', functionType: 'async' },
    coordinateForPoint: { type: 'function', functionType: 'promise' },
    fitToCoordinates: { type: 'function', functionType: 'async' },
    fitToElements: { type: 'function', functionType: 'async' },
    fitToSuppliedMarkers: { type: 'function', functionType: 'async' },
    getCamera: { type: 'function', functionType: 'promise' },
    getMapBoundaries: { type: 'function', functionType: 'promise' },
    getMarkersFrames: { type: 'function', functionType: 'promise' },
    pointForCoordinate: { type: 'function', functionType: 'promise' },
    setCamera: { type: 'function', functionType: 'async' },
    setIndoorActiveLevelIndex: { type: 'function', functionType: 'async' },
    setMapBoundaries: { type: 'function', functionType: 'async' },
    takeSnapshot: { type: 'function', functionType: 'async' },
  },
  AIRGoogleMapMarkerManager: {
    getConstants: { type: 'function' },
    hideCallout: { type: 'function', functionType: 'async' },
    redraw: { type: 'function', functionType: 'async' },
    redrawCallout: { type: 'function', functionType: 'async' },
    showCallout: { type: 'function', functionType: 'async' },
  },
  AIRGoogleMapOverlayManager: {},
  AIRGoogleMapPolygonManager: {},
  AIRGoogleMapPolylineManager: {},
  AIRGoogleMapUrlTileManager: {},
  AIRGoogleMapWMSTileManager: {},
  AIRMapCalloutManager: {},
  AIRMapCalloutSubviewManager: {},
  AIRMapCircleManager: {},
  AIRMapLocalTileManager: {},
  AIRMapManager: {
    getConstants: { type: 'function' },
    animateCamera: { type: 'function', functionType: 'async' },
    animateToBearing: { type: 'function', functionType: 'async' },
    animateToCoordinate: { type: 'function', functionType: 'async' },
    animateToNavigation: { type: 'function', functionType: 'async' },
    animateToRegion: { type: 'function', functionType: 'async' },
    animateToViewingAngle: { type: 'function', functionType: 'async' },
    coordinateForPoint: { type: 'function', functionType: 'promise' },
    fitToCoordinates: { type: 'function', functionType: 'async' },
    fitToElements: { type: 'function', functionType: 'async' },
    fitToSuppliedMarkers: { type: 'function', functionType: 'async' },
    getCamera: { type: 'function', functionType: 'promise' },
    getMapBoundaries: { type: 'function', functionType: 'promise' },
    getMarkersFrames: { type: 'function', functionType: 'promise' },
    pointForCoordinate: { type: 'function', functionType: 'promise' },
    setCamera: { type: 'function', functionType: 'async' },
    takeSnapshot: { type: 'function', functionType: 'async' },
  },
  AIRMapMarkerManager: {
    getConstants: { type: 'function' },
    hideCallout: { type: 'function', functionType: 'async' },
    redrawCallout: { type: 'function', functionType: 'async' },
    showCallout: { type: 'function', functionType: 'async' },
  },
  AIRMapOverlayManager: {},
  AIRMapPolygonManager: {},
  AIRMapPolylineManager: {},
  AIRMapUrlTileManager: {},
  AIRMapWMSTileManager: {},
  ExpoNativeModuleIntrospection: {
    getConstants: { type: 'function' },
    getNativeModuleNamesAsync: { type: 'function', functionType: 'promise' },
    introspectNativeModuleAsync: { type: 'function', functionType: 'promise' },
  },
  ExpoScreenOrientation: {
    getConstants: { type: 'function' },
    addListener: { type: 'function', functionType: 'async' },
    doesSupportAsync: { type: 'function', functionType: 'promise' },
    getOrientationAsync: { type: 'function', functionType: 'promise' },
    getOrientationLockAsync: { type: 'function', functionType: 'promise' },
    getPlatformOrientationLockAsync: { type: 'function', functionType: 'promise' },
    lockAsync: { type: 'function', functionType: 'promise' },
    lockPlatformAsync: { type: 'function', functionType: 'promise' },
    removeListeners: { type: 'function', functionType: 'async' },
    supportsOrientationLockAsync: { type: 'function', functionType: 'promise' },
    unlockAsync: { type: 'function', functionType: 'promise' },
  },
  ExponentAR: {
    ARFaceTrackingConfiguration: { type: 'boolean', mock: false },
    ARKitVersion: { type: 'string' },
    AROrientationTrackingConfiguration: { type: 'boolean', mock: true },
    ARWorldTrackingConfiguration: { type: 'boolean', mock: true },
    OrientationTrackingVideoFormats: { type: 'array' },
    WorldTrackingVideoFormats: { type: 'array' },
    anchorsDidUpdate: { type: 'string' },
    cameraDidChangeTrackingState: { type: 'string' },
    didFailWithError: { type: 'string' },
    frameDidUpdate: { type: 'string' },
    getConstants: { type: 'function' },
    isSupported: { type: 'boolean', mock: true },
    sessionInterruptionEnded: { type: 'string' },
    sessionWasInterrupted: { type: 'string' },
    addListener: { type: 'function', functionType: 'async' },
    getARMatrices: { type: 'function', functionType: 'sync' },
    getAutoFocusEnabled: { type: 'function', functionType: 'sync' },
    getCameraTexture: { type: 'function', functionType: 'sync' },
    getCurrentFrame: { type: 'function', functionType: 'sync' },
    getLightEstimationEnabled: { type: 'function', functionType: 'sync' },
    getPlaneDetection: { type: 'function', functionType: 'sync' },
    getProvidesAudioData: { type: 'function', functionType: 'sync' },
    getVideoFormat: { type: 'function', functionType: 'sync' },
    getWorldAlignment: { type: 'function', functionType: 'sync' },
    pause: { type: 'function', functionType: 'async' },
    performHitTest: { type: 'function', functionType: 'sync' },
    removeListeners: { type: 'function', functionType: 'async' },
    reset: { type: 'function', functionType: 'async' },
    resume: { type: 'function', functionType: 'async' },
    setAutoFocusEnabled: { type: 'function', functionType: 'async' },
    setConfigurationAsync: { type: 'function', functionType: 'promise' },
    setDetectionImagesAsync: { type: 'function', functionType: 'promise' },
    setLightEstimationEnabled: { type: 'function', functionType: 'async' },
    setPlaneDetection: { type: 'function', functionType: 'async' },
    setProvidesAudioData: { type: 'function', functionType: 'async' },
    setShouldAttemptRelocalization: { type: 'function', functionType: 'async' },
    setWorldAlignment: { type: 'function', functionType: 'async' },
    setWorldOriginAsync: { type: 'function', functionType: 'promise' },
    startAsync: { type: 'function', functionType: 'promise' },
    stopAsync: { type: 'function', functionType: 'promise' },
  },
  ExponentErrorRecovery: {
    getConstants: { type: 'function' },
    setRecoveryProps: { type: 'function', functionType: 'async' },
  },
  ExponentNotifications: {
    getConstants: { type: 'function' },
    cancelAllScheduledNotificationsAsync: { type: 'function', functionType: 'promise' },
    cancelScheduledNotificationAsync: { type: 'function', functionType: 'promise' },
    createCategoryAsync: { type: 'function', functionType: 'promise' },
    deleteCategoryAsync: { type: 'function', functionType: 'promise' },
    getBadgeNumberAsync: { type: 'function', functionType: 'promise' },
    getDevicePushTokenAsync: { type: 'function', functionType: 'promise' },
    getExponentPushTokenAsync: { type: 'function', functionType: 'promise' },
    legacyScheduleLocalRepeatingNotification: { type: 'function', functionType: 'promise' },
    presentLocalNotification: { type: 'function', functionType: 'promise' },
    scheduleLocalNotification: { type: 'function', functionType: 'promise' },
    scheduleNotificationWithCalendar: { type: 'function', functionType: 'promise' },
    scheduleNotificationWithTimer: { type: 'function', functionType: 'promise' },
    setBadgeNumberAsync: { type: 'function', functionType: 'promise' },
  },
  ExponentScopedModuleRegistry: {},
  ExponentSplashScreen: {
    getConstants: { type: 'function' },
    hide: { type: 'function', functionType: 'async' },
    preventAutoHide: { type: 'function', functionType: 'async' },
  },
  ExponentTest: {
    getConstants: { type: 'function' },
    isInCI: { type: 'number', mock: 0 },
    action: { type: 'function', functionType: 'promise' },
    completed: { type: 'function', functionType: 'async' },
    log: { type: 'function', functionType: 'async' },
    shouldSkipTestsRequiringPermissionsAsync: { type: 'function', functionType: 'promise' },
  },
  ExponentUpdates: {
    getConstants: { type: 'function' },
    checkForUpdateAsync: { type: 'function', functionType: 'promise' },
    fetchUpdateAsync: { type: 'function', functionType: 'promise' },
    reload: { type: 'function', functionType: 'async' },
    reloadFromCache: { type: 'function', functionType: 'async' },
  },
  ExponentUtil: {},
  LottieAnimationView: {
    VERSION: { type: 'number', mock: 1 },
    getConstants: { type: 'function' },
    play: { type: 'function', functionType: 'async' },
    reset: { type: 'function', functionType: 'async' },
  },
  NativeUnimoduleProxy: {
    exportedMethods: {
      type: 'object',
      mock: {
        AdIconViewManager: [],
        AdOptionsViewManager: [],
        CTKAdSettingsManager: [
          { key: 0, argumentsCount: 1, name: 'addTestDevice' },
          { key: 1, argumentsCount: 1, name: 'setIsChildDirected' },
          { key: 2, argumentsCount: 1, name: 'setMeditationService' },
          { key: 3, argumentsCount: 1, name: 'setUrlPrefix' },
          { key: 4, argumentsCount: 1, name: 'setLogLevel' },
          { key: 5, argumentsCount: 0, name: 'clearTestDevices' },
        ],
        CTKBannerViewManager: [],
        CTKInterstitialAdManager: [{ key: 0, argumentsCount: 1, name: 'showAd' }],
        CTKNativeAdManager: [
          { key: 0, argumentsCount: 1, name: 'disableAutoRefresh' },
          { key: 1, argumentsCount: 2, name: 'setMediaCachePolicy' },
          { key: 2, argumentsCount: 4, name: 'registerViewsForInteraction' },
          { key: 3, argumentsCount: 2, name: 'init' },
        ],
        ExpoAdsAdMobBannerView: [],
        ExpoAdsAdMobInterstitialManager: [
          { key: 0, argumentsCount: 1, name: 'setTestDeviceID' },
          { key: 1, argumentsCount: 1, name: 'requestAd' },
          { key: 2, argumentsCount: 0, name: 'showAd' },
          { key: 3, argumentsCount: 0, name: 'dismissAd' },
          { key: 4, argumentsCount: 1, name: 'setAdUnitID' },
          { key: 5, argumentsCount: 0, name: 'getIsReady' },
        ],
        ExpoAdsAdMobRewardedVideoAdManager: [
          { key: 0, argumentsCount: 1, name: 'setTestDeviceID' },
          { key: 1, argumentsCount: 1, name: 'requestAd' },
          { key: 2, argumentsCount: 0, name: 'showAd' },
          { key: 3, argumentsCount: 0, name: 'dismissAd' },
          { key: 4, argumentsCount: 1, name: 'setAdUnitID' },
          { key: 5, argumentsCount: 0, name: 'getIsReady' },
        ],
        ExpoAmplitude: [
          { key: 0, argumentsCount: 1, name: 'setUserId' },
          { key: 1, argumentsCount: 1, name: 'logEvent' },
          { key: 2, argumentsCount: 2, name: 'logEventWithProperties' },
          { key: 3, argumentsCount: 1, name: 'initialize' },
          { key: 4, argumentsCount: 1, name: 'setUserProperties' },
          { key: 5, argumentsCount: 2, name: 'setGroup' },
          { key: 6, argumentsCount: 0, name: 'clearUserProperties' },
        ],
        ExpoAppAuth: [{ key: 0, argumentsCount: 1, name: 'executeAsync' }],
        ExpoAppleAuthentication: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'requestAsync' },
          { key: 2, argumentsCount: 1, name: 'getCredentialStateAsync' },
        ],
        ExpoAppleAuthenticationButtonContinueBlack: [],
        ExpoAppleAuthenticationButtonContinueWhite: [],
        ExpoAppleAuthenticationButtonContinueWhiteOutline: [],
        ExpoAppleAuthenticationButtonSignInBlack: [],
        ExpoAppleAuthenticationButtonSignInWhite: [],
        ExpoAppleAuthenticationButtonSignInWhiteOutline: [],
        ExpoApplication: [
          { key: 0, argumentsCount: 0, name: 'getInstallationTimeAsync' },
          { key: 1, argumentsCount: 0, name: 'getIosIdForVendorAsync' },
        ],
        ExpoBackgroundFetch: [
          { key: 0, argumentsCount: 1, name: 'unregisterTaskAsync' },
          { key: 1, argumentsCount: 1, name: 'setMinimumIntervalAsync' },
          { key: 2, argumentsCount: 0, name: 'getStatusAsync' },
          { key: 3, argumentsCount: 2, name: 'registerTaskAsync' },
        ],
        ExpoBarCodeScannerModule: [{ key: 0, argumentsCount: 2, name: 'scanFromURLAsync' }],
        ExpoBarCodeScannerView: [],
        ExpoBarometer: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'setUpdateInterval' },
        ],
        ExpoBattery: [
          { key: 0, argumentsCount: 0, name: 'getBatteryLevelAsync' },
          { key: 1, argumentsCount: 0, name: 'isLowPowerModeEnabledAsync' },
          { key: 2, argumentsCount: 0, name: 'getBatteryStateAsync' },
        ],
        ExpoBlurViewManager: [{ key: 0, argumentsCount: 2, name: 'updateProps' }],
        ExpoBrightness: [
          { key: 0, argumentsCount: 0, name: 'setSystemBrightnessAsync' },
          { key: 1, argumentsCount: 0, name: 'getSystemBrightnessAsync' },
          { key: 2, argumentsCount: 0, name: 'getSystemBrightnessModeAsync' },
          { key: 3, argumentsCount: 0, name: 'useSystemBrightnessAsync' },
          { key: 4, argumentsCount: 0, name: 'isUsingSystemBrightnessAsync' },
          { key: 5, argumentsCount: 1, name: 'setBrightnessAsync' },
          { key: 6, argumentsCount: 0, name: 'getBrightnessAsync' },
          { key: 7, argumentsCount: 0, name: 'setSystemBrightnessModeAsync' },
        ],
        ExpoCalendar: [
          { key: 0, argumentsCount: 1, name: 'deleteCalendarAsync' },
          { key: 1, argumentsCount: 1, name: 'deleteReminderAsync' },
          { key: 2, argumentsCount: 2, name: 'deleteEventAsync' },
          { key: 3, argumentsCount: 3, name: 'getEventsAsync' },
          { key: 4, argumentsCount: 0, name: 'getSourcesAsync' },
          { key: 5, argumentsCount: 1, name: 'getReminderByIdAsync' },
          { key: 6, argumentsCount: 0, name: 'requestPermissionsAsync' },
          { key: 7, argumentsCount: 1, name: 'getAttendeesForEventAsync' },
          { key: 8, argumentsCount: 4, name: 'getRemindersAsync' },
          { key: 9, argumentsCount: 0, name: 'requestRemindersPermissionsAsync' },
          { key: 10, argumentsCount: 2, name: 'saveEventAsync' },
          { key: 11, argumentsCount: 1, name: 'getCalendarsAsync' },
          { key: 12, argumentsCount: 2, name: 'getEventByIdAsync' },
          { key: 13, argumentsCount: 0, name: 'getDefaultCalendarAsync' },
          { key: 14, argumentsCount: 1, name: 'saveCalendarAsync' },
          { key: 15, argumentsCount: 1, name: 'saveReminderAsync' },
          { key: 16, argumentsCount: 1, name: 'getSourceByIdAsync' },
        ],
        ExpoCellular: [{ key: 0, argumentsCount: 0, name: 'getCellularGenerationAsync' }],
        ExpoContacts: [
          { key: 0, argumentsCount: 0, name: 'getDefaultContainerIdentifierAsync' },
          { key: 1, argumentsCount: 2, name: 'addExistingGroupToContainerAsync' },
          { key: 2, argumentsCount: 2, name: 'createGroupAsync' },
          { key: 3, argumentsCount: 2, name: 'addContactAsync' },
          { key: 4, argumentsCount: 1, name: 'removeGroupAsync' },
          { key: 5, argumentsCount: 2, name: 'removeContactFromGroupAsync' },
          { key: 6, argumentsCount: 1, name: 'removeContactAsync' },
          { key: 7, argumentsCount: 1, name: 'updateContactAsync' },
          { key: 8, argumentsCount: 1, name: 'getGroupsAsync' },
          { key: 9, argumentsCount: 2, name: 'addExistingContactToGroupAsync' },
          { key: 10, argumentsCount: 1, name: 'getContainersAsync' },
          { key: 11, argumentsCount: 2, name: 'updateGroupNameAsync' },
          { key: 12, argumentsCount: 1, name: 'getContactsAsync' },
          { key: 13, argumentsCount: 3, name: 'presentFormAsync' },
          { key: 14, argumentsCount: 1, name: 'writeContactToFileAsync' },
          { key: 15, argumentsCount: 0, name: 'dismissFormAsync' },
        ],
        ExpoCrypto: [{ key: 0, argumentsCount: 3, name: 'digestStringAsync' }],
        ExpoDevice: [
          { key: 0, argumentsCount: 0, name: 'getDeviceTypeAsync' },
          { key: 1, argumentsCount: 0, name: 'isRootedExperimentalAsync' },
          { key: 2, argumentsCount: 0, name: 'getUptimeAsync' },
        ],
        ExpoDocumentPicker: [{ key: 0, argumentsCount: 1, name: 'getDocumentAsync' }],
        ExpoFaceDetector: [{ key: 0, argumentsCount: 1, name: 'detectFaces' }],
        ExpoFontLoader: [{ key: 0, argumentsCount: 2, name: 'loadAsync' }],
        ExpoGoogleSignIn: [
          { key: 0, argumentsCount: 1, name: 'getTokensAsync' },
          { key: 1, argumentsCount: 1, name: 'getPhotoAsync' },
          { key: 2, argumentsCount: 0, name: 'getCurrentUserAsync' },
          { key: 3, argumentsCount: 0, name: 'disconnectAsync' },
          { key: 4, argumentsCount: 0, name: 'signOutAsync' },
          { key: 5, argumentsCount: 1, name: 'initAsync' },
          { key: 6, argumentsCount: 0, name: 'signInAsync' },
          { key: 7, argumentsCount: 0, name: 'signInSilentlyAsync' },
          { key: 8, argumentsCount: 0, name: 'isConnectedAsync' },
        ],
        ExpoHaptics: [
          { key: 0, argumentsCount: 0, name: 'selectionAsync' },
          { key: 1, argumentsCount: 1, name: 'notificationAsync' },
          { key: 2, argumentsCount: 1, name: 'impactAsync' },
        ],
        ExpoImageManipulator: [{ key: 0, argumentsCount: 3, name: 'manipulateAsync' }],
        ExpoKeepAwake: [
          { key: 0, argumentsCount: 1, name: 'activate' },
          { key: 1, argumentsCount: 1, name: 'deactivate' },
        ],
        ExpoLinearGradientManager: [],
        ExpoLocalAuthentication: [
          { key: 0, argumentsCount: 0, name: 'supportedAuthenticationTypesAsync' },
          { key: 1, argumentsCount: 0, name: 'isEnrolledAsync' },
          { key: 2, argumentsCount: 0, name: 'hasHardwareAsync' },
          { key: 3, argumentsCount: 1, name: 'authenticateAsync' },
        ],
        ExpoLocalization: [{ key: 0, argumentsCount: 0, name: 'getLocalizationAsync' }],
        ExpoLocation: [
          { key: 0, argumentsCount: 2, name: 'startLocationUpdatesAsync' },
          { key: 1, argumentsCount: 1, name: 'hasStartedLocationUpdatesAsync' },
          { key: 2, argumentsCount: 0, name: 'getProviderStatusAsync' },
          { key: 3, argumentsCount: 1, name: 'removeWatchAsync' },
          { key: 4, argumentsCount: 0, name: 'hasServicesEnabledAsync' },
          { key: 5, argumentsCount: 1, name: 'geocodeAsync' },
          { key: 6, argumentsCount: 2, name: 'startGeofencingAsync' },
          { key: 7, argumentsCount: 1, name: 'getCurrentPositionAsync' },
          { key: 8, argumentsCount: 0, name: 'requestPermissionsAsync' },
          { key: 9, argumentsCount: 1, name: 'stopGeofencingAsync' },
          { key: 10, argumentsCount: 1, name: 'stopLocationUpdatesAsync' },
          { key: 11, argumentsCount: 1, name: 'hasStartedGeofencingAsync' },
          { key: 12, argumentsCount: 1, name: 'reverseGeocodeAsync' },
          { key: 13, argumentsCount: 1, name: 'watchDeviceHeading' },
          { key: 14, argumentsCount: 2, name: 'watchPositionImplAsync' },
        ],
        ExpoMailComposer: [{ key: 0, argumentsCount: 1, name: 'composeAsync' }],
        ExpoNetwork: [
          { key: 0, argumentsCount: 0, name: 'getIpAddressAsync' },
          { key: 1, argumentsCount: 0, name: 'getMacAddressAsync' },
          { key: 2, argumentsCount: 0, name: 'getNetworkStateAsync' },
        ],
        ExpoPermissions: [
          { key: 0, argumentsCount: 1, name: 'getAsync' },
          { key: 1, argumentsCount: 1, name: 'askAsync' },
        ],
        ExpoPublisherBannerView: [],
        ExpoRandom: [{ key: 0, argumentsCount: 1, name: 'getRandomBase64StringAsync' }],
        ExpoSMS: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 2, name: 'sendSMSAsync' },
        ],
        ExpoSecureStore: [
          { key: 0, argumentsCount: 2, name: 'getValueWithKeyAsync' },
          { key: 1, argumentsCount: 2, name: 'deleteValueWithKeyAsync' },
          { key: 2, argumentsCount: 3, name: 'setValueWithKeyAsync' },
        ],
        ExpoSharing: [{ key: 0, argumentsCount: 2, name: 'shareAsync' }],
        ExpoStoreReview: [{ key: 0, argumentsCount: 0, name: 'requestReview' }],
        ExpoTaskManager: [
          { key: 0, argumentsCount: 1, name: 'isTaskRegisteredAsync' },
          { key: 1, argumentsCount: 1, name: 'unregisterTaskAsync' },
          { key: 2, argumentsCount: 0, name: 'unregisterAllTasksAsync' },
          { key: 3, argumentsCount: 0, name: 'getRegisteredTasksAsync' },
          { key: 4, argumentsCount: 1, name: 'getTaskOptionsAsync' },
          { key: 5, argumentsCount: 2, name: 'notifyTaskFinishedAsync' },
        ],
        ExpoVideoManager: [{ key: 0, argumentsCount: 2, name: 'setFullscreen' }],
        ExpoVideoThumbnails: [{ key: 0, argumentsCount: 2, name: 'getThumbnail' }],
        ExpoWebBrowser: [
          { key: 0, argumentsCount: 1, name: 'coolDownAsync' },
          { key: 1, argumentsCount: 0, name: 'dismissBrowser' },
          { key: 2, argumentsCount: 2, name: 'openBrowserAsync' },
          { key: 3, argumentsCount: 2, name: 'mayInitWithUrlAsync' },
          { key: 4, argumentsCount: 0, name: 'dismissAuthSession' },
          { key: 5, argumentsCount: 1, name: 'warmUpAsync' },
          { key: 6, argumentsCount: 0, name: 'getCustomTabsSupportingBrowsers' },
          { key: 7, argumentsCount: 2, name: 'openAuthSessionAsync' },
        ],
        ExponentAV: [
          { key: 0, argumentsCount: 1, name: 'prepareAudioRecorder' },
          { key: 1, argumentsCount: 0, name: 'getAudioRecordingStatus' },
          { key: 2, argumentsCount: 2, name: 'replaySound' },
          { key: 3, argumentsCount: 1, name: 'unloadForSound' },
          { key: 4, argumentsCount: 1, name: 'unloadForVideo' },
          { key: 5, argumentsCount: 3, name: 'loadForVideo' },
          { key: 6, argumentsCount: 2, name: 'setStatusForVideo' },
          { key: 7, argumentsCount: 1, name: 'getStatusForVideo' },
          { key: 8, argumentsCount: 1, name: 'getStatusForSound' },
          { key: 9, argumentsCount: 1, name: 'setAudioMode' },
          { key: 10, argumentsCount: 2, name: 'setStatusForSound' },
          { key: 11, argumentsCount: 1, name: 'setAudioIsEnabled' },
          { key: 12, argumentsCount: 0, name: 'startAudioRecording' },
          { key: 13, argumentsCount: 2, name: 'loadForSound' },
          { key: 14, argumentsCount: 2, name: 'replayVideo' },
          { key: 15, argumentsCount: 0, name: 'pauseAudioRecording' },
          { key: 16, argumentsCount: 0, name: 'stopAudioRecording' },
          { key: 17, argumentsCount: 0, name: 'unloadAudioRecorder' },
        ],
        ExponentAccelerometer: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'setUpdateInterval' },
        ],
        ExponentCameraManager: [
          { key: 0, argumentsCount: 1, name: 'stopRecording' },
          { key: 1, argumentsCount: 2, name: 'getAvailablePictureSizes' },
          { key: 2, argumentsCount: 2, name: 'takePicture' },
          { key: 3, argumentsCount: 1, name: 'pausePreview' },
          { key: 4, argumentsCount: 2, name: 'record' },
          { key: 5, argumentsCount: 1, name: 'resumePreview' },
        ],
        ExponentConstants: [{ key: 0, argumentsCount: 0, name: 'getWebViewUserAgentAsync' }],
        ExponentDeviceMotion: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'setUpdateInterval' },
        ],
        ExponentFacebook: [{ key: 0, argumentsCount: 2, name: 'logInWithReadPermissionsAsync' }],
        ExponentFileSystem: [
          { key: 0, argumentsCount: 2, name: 'readDirectoryAsync' },
          { key: 1, argumentsCount: 0, name: 'getTotalDiskCapacityAsync' },
          { key: 2, argumentsCount: 2, name: 'getInfoAsync' },
          { key: 3, argumentsCount: 3, name: 'downloadAsync' },
          { key: 4, argumentsCount: 3, name: 'writeAsStringAsync' },
          { key: 5, argumentsCount: 2, name: 'deleteAsync' },
          { key: 6, argumentsCount: 1, name: 'moveAsync' },
          { key: 7, argumentsCount: 0, name: 'getFreeDiskStorageAsync' },
          { key: 8, argumentsCount: 2, name: 'readAsStringAsync' },
          { key: 9, argumentsCount: 5, name: 'downloadResumableStartAsync' },
          { key: 10, argumentsCount: 2, name: 'makeDirectoryAsync' },
          { key: 11, argumentsCount: 1, name: 'copyAsync' },
          { key: 12, argumentsCount: 1, name: 'downloadResumablePauseAsync' },
        ],
        ExponentGLObjectManager: [
          { key: 0, argumentsCount: 0, name: 'createContextAsync' },
          { key: 1, argumentsCount: 1, name: 'destroyContextAsync' },
          { key: 2, argumentsCount: 1, name: 'destroyObjectAsync' },
          { key: 3, argumentsCount: 2, name: 'createCameraTextureAsync' },
          { key: 4, argumentsCount: 2, name: 'takeSnapshotAsync' },
        ],
        ExponentGLViewManager: [],
        ExponentGyroscope: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'setUpdateInterval' },
        ],
        ExponentImagePicker: [
          { key: 0, argumentsCount: 1, name: 'launchCameraAsync' },
          { key: 1, argumentsCount: 1, name: 'launchImageLibraryAsync' },
        ],
        ExponentMagnetometer: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'setUpdateInterval' },
        ],
        ExponentMagnetometerUncalibrated: [
          { key: 0, argumentsCount: 0, name: 'isAvailableAsync' },
          { key: 1, argumentsCount: 1, name: 'setUpdateInterval' },
        ],
        ExponentMediaLibrary: [
          { key: 0, argumentsCount: 1, name: 'createAssetAsync' },
          { key: 1, argumentsCount: 1, name: 'deleteAssetsAsync' },
          { key: 2, argumentsCount: 0, name: 'getPermissionsAsync' },
          { key: 3, argumentsCount: 2, name: 'removeAssetsFromAlbumAsync' },
          { key: 4, argumentsCount: 0, name: 'requestPermissionsAsync' },
          { key: 5, argumentsCount: 1, name: 'getAlbumsAsync' },
          { key: 6, argumentsCount: 1, name: 'getAssetsAsync' },
          { key: 7, argumentsCount: 2, name: 'createAlbumAsync' },
          { key: 8, argumentsCount: 2, name: 'deleteAlbumsAsync' },
          { key: 9, argumentsCount: 0, name: 'getMomentsAsync' },
          { key: 10, argumentsCount: 2, name: 'addAssetsToAlbumAsync' },
          { key: 11, argumentsCount: 1, name: 'getAssetInfoAsync' },
          { key: 12, argumentsCount: 1, name: 'getAlbumAsync' },
        ],
        ExponentPedometer: [
          { key: 0, argumentsCount: 2, name: 'getStepCountAsync' },
          { key: 1, argumentsCount: 0, name: 'isAvailableAsync' },
        ],
        ExponentPrint: [
          { key: 0, argumentsCount: 1, name: 'print' },
          { key: 1, argumentsCount: 0, name: 'selectPrinter' },
          { key: 2, argumentsCount: 1, name: 'printToFileAsync' },
        ],
        ExponentSQLite: [
          { key: 0, argumentsCount: 1, name: 'close' },
          { key: 1, argumentsCount: 3, name: 'exec' },
        ],
        ExponentSegment: [
          { key: 0, argumentsCount: 1, name: 'setEnabledAsync' },
          { key: 1, argumentsCount: 2, name: 'screenWithProperties' },
          { key: 2, argumentsCount: 0, name: 'flush' },
          { key: 3, argumentsCount: 1, name: 'screen' },
          { key: 4, argumentsCount: 1, name: 'identify' },
          { key: 5, argumentsCount: 2, name: 'identifyWithTraits' },
          { key: 6, argumentsCount: 1, name: 'initializeAndroid' },
          { key: 7, argumentsCount: 2, name: 'trackWithProperties' },
          { key: 8, argumentsCount: 1, name: 'initializeIOS' },
          { key: 9, argumentsCount: 2, name: 'groupWithTraits' },
          { key: 10, argumentsCount: 2, name: 'alias' },
          { key: 11, argumentsCount: 1, name: 'group' },
          { key: 12, argumentsCount: 1, name: 'track' },
          { key: 13, argumentsCount: 0, name: 'getEnabledAsync' },
          { key: 14, argumentsCount: 0, name: 'reset' },
        ],
        ExponentSpeech: [
          { key: 0, argumentsCount: 3, name: 'speak' },
          { key: 1, argumentsCount: 0, name: 'stop' },
          { key: 2, argumentsCount: 0, name: 'pause' },
          { key: 3, argumentsCount: 0, name: 'resume' },
          { key: 4, argumentsCount: 0, name: 'isSpeaking' },
          { key: 5, argumentsCount: 0, name: 'getVoices' },
        ],
        MediaViewManager: [],
      },
    },
    getConstants: { type: 'function' },
    modulesConstants: {
      type: 'mock',
      mockDefinition: {
        CTKAdSettingsManager: {
          addListener: { type: 'function' },
          addTestDevice: { type: 'function' },
          clearTestDevices: { type: 'function' },
          currentDeviceHash: { type: 'string' },
          removeListeners: { type: 'function' },
          setIsChildDirected: { type: 'function' },
          setLogLevel: { type: 'function' },
          setMeditationService: { type: 'function' },
          setUrlPrefix: { type: 'function' },
        },
        ExpoAppAuth: {
          OAuthRedirect: { type: 'array' },
          URLSchemes: { type: 'array' },
          addListener: { type: 'function' },
          executeAsync: { type: 'function' },
          removeListeners: { type: 'function' },
        },
        ExpoApplication: {
          addListener: { type: 'function' },
          applicationId: { type: 'string' },
          applicationName: { type: 'string' },
          getInstallationTimeAsync: { type: 'function' },
          getIosIdForVendorAsync: { type: 'function' },
          nativeApplicationVersion: { type: 'string' },
          nativeBuildVersion: { type: 'string' },
          removeListeners: { type: 'function' },
        },
        ExpoBarCodeScannerModule: {
          BarCodeType: { type: 'object' },
          Type: { type: 'object' },
          addListener: { type: 'function' },
          removeListeners: { type: 'function' },
          scanFromURLAsync: { type: 'function' },
        },
        ExpoBattery: {
          addListener: { type: 'function' },
          getBatteryLevelAsync: { type: 'function' },
          getBatteryStateAsync: { type: 'function' },
          isLowPowerModeEnabledAsync: { type: 'function' },
          isSupported: { type: 'boolean', mock: true },
          removeListeners: { type: 'function' },
        },
        ExpoCellular: {
          addListener: { type: 'function' },
          allowsVoip: { type: 'boolean', mock: true },
          carrier: { type: 'string' },
          getCellularGenerationAsync: { type: 'function' },
          isoCountryCode: {
            type: 'object',
            mock: null,
          },
          mobileCountryCode: {
            type: 'object',
            mock: null,
          },
          mobileNetworkCode: {
            type: 'object',
            mock: null,
          },
          removeListeners: { type: 'function' },
        },
        ExpoDevice: {
          addListener: { type: 'function' },
          brand: { type: 'string' },
          deviceName: { type: 'string' },
          deviceYearClass: { type: 'number', mock: 2016 },
          getDeviceTypeAsync: { type: 'function' },
          getUptimeAsync: { type: 'function' },
          isDevice: { type: 'boolean', mock: true },
          isRootedExperimentalAsync: { type: 'function' },
          manufacturer: { type: 'string' },
          modelId: { type: 'string' },
          osBuildId: { type: 'string' },
          osInternalBuildId: { type: 'string' },
          osName: { type: 'string' },
          osVersion: { type: 'string' },
          removeListeners: { type: 'function' },
          supportedCpuArchitectures: { type: 'array' },
          totalMemory: { type: 'number', mock: 2109210624 },
        },
        ExpoFaceDetector: {
          Classifications: { type: 'object' },
          Landmarks: { type: 'object' },
          Mode: { type: 'object' },
          addListener: { type: 'function' },
          detectFaces: { type: 'function' },
          removeListeners: { type: 'function' },
        },
        ExpoGoogleSignIn: {
          ERRORS: { type: 'object' },
          SCOPES: { type: 'object' },
          TYPES: { type: 'object' },
          addListener: { type: 'function' },
          disconnectAsync: { type: 'function' },
          getCurrentUserAsync: { type: 'function' },
          getPhotoAsync: { type: 'function' },
          getTokensAsync: { type: 'function' },
          initAsync: { type: 'function' },
          isConnectedAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          signInAsync: { type: 'function' },
          signInSilentlyAsync: { type: 'function' },
          signOutAsync: { type: 'function' },
        },
        ExpoLocalization: {
          addListener: { type: 'function' },
          getLocalizationAsync: { type: 'function' },
          isRTL: { type: 'boolean', mock: false },
          isoCurrencyCodes: { type: 'array' },
          locale: { type: 'string' },
          locales: { type: 'array' },
          region: { type: 'string' },
          removeListeners: { type: 'function' },
          timezone: { type: 'string' },
        },
        ExpoSecureStore: {
          AFTER_FIRST_UNLOCK: { type: 'number', mock: 0 },
          AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY: { type: 'number', mock: 1 },
          ALWAYS: { type: 'number', mock: 2 },
          ALWAYS_THIS_DEVICE_ONLY: { type: 'number', mock: 4 },
          WHEN_PASSCODE_SET_THIS_DEVICE_ONLY: { type: 'number', mock: 3 },
          WHEN_UNLOCKED: { type: 'number', mock: 5 },
          WHEN_UNLOCKED_THIS_DEVICE_ONLY: { type: 'number', mock: 6 },
          addListener: { type: 'function' },
          deleteValueWithKeyAsync: { type: 'function' },
          getValueWithKeyAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          setValueWithKeyAsync: { type: 'function' },
        },
        ExpoStoreReview: {
          addListener: { type: 'function' },
          isSupported: { type: 'boolean', mock: true },
          removeListeners: { type: 'function' },
          requestReview: { type: 'function' },
        },
        ExpoTaskManager: {
          EVENT_NAME: { type: 'string' },
          addListener: { type: 'function' },
          getRegisteredTasksAsync: { type: 'function' },
          getTaskOptionsAsync: { type: 'function' },
          isTaskRegisteredAsync: { type: 'function' },
          notifyTaskFinishedAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          unregisterAllTasksAsync: { type: 'function' },
          unregisterTaskAsync: { type: 'function' },
        },
        ExpoVideoManager: {
          ScaleAspectFill: { type: 'string' },
          ScaleAspectFit: { type: 'string' },
          ScaleNone: { type: 'string' },
          ScaleToFill: { type: 'string' },
          addListener: { type: 'function' },
          removeListeners: { type: 'function' },
          setFullscreen: { type: 'function' },
        },
        ExponentAV: {
          Qualities: { type: 'object' },
          addListener: { type: 'function' },
          getAudioRecordingStatus: { type: 'function' },
          getStatusForSound: { type: 'function' },
          getStatusForVideo: { type: 'function' },
          loadForSound: { type: 'function' },
          loadForVideo: { type: 'function' },
          pauseAudioRecording: { type: 'function' },
          prepareAudioRecorder: { type: 'function' },
          removeListeners: { type: 'function' },
          replaySound: { type: 'function' },
          replayVideo: { type: 'function' },
          setAudioIsEnabled: { type: 'function' },
          setAudioMode: { type: 'function' },
          setStatusForSound: { type: 'function' },
          setStatusForVideo: { type: 'function' },
          startAudioRecording: { type: 'function' },
          stopAudioRecording: { type: 'function' },
          unloadAudioRecorder: { type: 'function' },
          unloadForSound: { type: 'function' },
          unloadForVideo: { type: 'function' },
        },
        ExponentCameraManager: {
          AutoFocus: { type: 'object' },
          FlashMode: { type: 'object' },
          Type: { type: 'object' },
          VideoQuality: { type: 'object' },
          VideoStabilization: { type: 'object' },
          WhiteBalance: { type: 'object' },
          addListener: { type: 'function' },
          getAvailablePictureSizes: { type: 'function' },
          pausePreview: { type: 'function' },
          record: { type: 'function' },
          removeListeners: { type: 'function' },
          resumePreview: { type: 'function' },
          stopRecording: { type: 'function' },
          takePicture: { type: 'function' },
        },
        ExponentConstants: {
          addListener: { type: 'function' },
          appOwnership: { type: 'string' },
          debugMode: { type: 'boolean', mock: true },
          deviceName: { type: 'string' },
          deviceYearClass: { type: 'number', mock: 2016 },
          experienceUrl: { type: 'string' },
          expoRuntimeVersion: { type: 'string' },
          expoVersion: { type: 'string' },
          getWebViewUserAgentAsync: { type: 'function' },
          installationId: { type: 'string' },
          isDetached: { type: 'boolean', mock: false },
          isDevice: { type: 'boolean', mock: true },
          isHeadless: { type: 'boolean', mock: false },
          linkingUri: { type: 'string' },
          manifest: { type: 'object' },
          nativeAppVersion: { type: 'string' },
          nativeBuildVersion: { type: 'string' },
          platform: { type: 'object' },
          removeListeners: { type: 'function' },
          sessionId: { type: 'string' },
          statusBarHeight: { type: 'number', mock: 20 },
          supportedExpoSdks: { type: 'array' },
          systemFonts: { type: 'array' },
        },
        ExponentDeviceMotion: {
          Gravity: { type: 'number', mock: 9.8100004196167 },
          addListener: { type: 'function' },
          isAvailableAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          setUpdateInterval: { type: 'function' },
        },
        ExponentFileSystem: {
          addListener: { type: 'function' },
          bundleDirectory: {
            type: 'object',
            mock: null,
          },
          bundledAssets: {
            type: 'object',
            mock: null,
          },
          cacheDirectory: { type: 'string' },
          copyAsync: { type: 'function' },
          deleteAsync: { type: 'function' },
          documentDirectory: { type: 'string' },
          downloadAsync: { type: 'function' },
          downloadResumablePauseAsync: { type: 'function' },
          downloadResumableStartAsync: { type: 'function' },
          getFreeDiskStorageAsync: { type: 'function' },
          getInfoAsync: { type: 'function' },
          getTotalDiskCapacityAsync: { type: 'function' },
          makeDirectoryAsync: { type: 'function' },
          moveAsync: { type: 'function' },
          readAsStringAsync: { type: 'function' },
          readDirectoryAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          writeAsStringAsync: { type: 'function' },
        },
        ExponentMediaLibrary: {
          CHANGE_LISTENER_NAME: { type: 'string' },
          MediaType: { type: 'object' },
          SortBy: { type: 'object' },
          addAssetsToAlbumAsync: { type: 'function' },
          addListener: { type: 'function' },
          createAlbumAsync: { type: 'function' },
          createAssetAsync: { type: 'function' },
          deleteAlbumsAsync: { type: 'function' },
          deleteAssetsAsync: { type: 'function' },
          getAlbumAsync: { type: 'function' },
          getAlbumsAsync: { type: 'function' },
          getAssetInfoAsync: { type: 'function' },
          getAssetsAsync: { type: 'function' },
          getMomentsAsync: { type: 'function' },
          getPermissionsAsync: { type: 'function' },
          removeAssetsFromAlbumAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          requestPermissionsAsync: { type: 'function' },
        },
        ExponentPrint: {
          Orientation: { type: 'object' },
          addListener: { type: 'function' },
          print: { type: 'function' },
          printToFileAsync: { type: 'function' },
          removeListeners: { type: 'function' },
          selectPrinter: { type: 'function' },
        },
      },
    },
    viewManagersNames: {
      type: 'array',
      mock: [
        'AdIconView',
        'AdOptionsView',
        'CTKBannerView',
        'CTKNativeAd',
        'ExpoAdsAdMobBannerView',
        'ExpoAdsPublisherBannerView',
        'ExpoAppleAuthenticationButtonContinueBlack',
        'ExpoAppleAuthenticationButtonContinueWhite',
        'ExpoAppleAuthenticationButtonContinueWhiteOutline',
        'ExpoAppleAuthenticationButtonSignInBlack',
        'ExpoAppleAuthenticationButtonSignInWhite',
        'ExpoAppleAuthenticationButtonSignInWhiteOutline',
        'ExpoBarCodeScannerView',
        'ExpoBlurView',
        'ExpoLinearGradient',
        'ExpoVideoView',
        'ExponentCamera',
        'ExponentGLView',
        'MediaView',
      ],
    },
    callMethod: { type: 'function', functionType: 'promise' },
  },
  RNAWSCognito: {
    getConstants: { type: 'function' },
    computeModPow: { type: 'function', functionType: 'async' },
    computeS: { type: 'function', functionType: 'async' },
  },
  RNBranch: {
    ADD_TO_CART_EVENT: { type: 'string' },
    ADD_TO_WISHLIST_EVENT: { type: 'string' },
    INIT_SESSION_ERROR: { type: 'string' },
    INIT_SESSION_SUCCESS: { type: 'string' },
    PURCHASED_EVENT: { type: 'string' },
    PURCHASE_INITIATED_EVENT: { type: 'string' },
    REGISTER_VIEW_EVENT: { type: 'string' },
    SHARE_COMPLETED_EVENT: { type: 'string' },
    SHARE_INITIATED_EVENT: { type: 'string' },
    STANDARD_EVENT_ACHIEVE_LEVEL: { type: 'string' },
    STANDARD_EVENT_ADD_PAYMENT_INFO: { type: 'string' },
    STANDARD_EVENT_ADD_TO_CART: { type: 'string' },
    STANDARD_EVENT_ADD_TO_WISHLIST: { type: 'string' },
    STANDARD_EVENT_COMPLETE_REGISTRATION: { type: 'string' },
    STANDARD_EVENT_COMPLETE_TUTORIAL: { type: 'string' },
    STANDARD_EVENT_INITIATE_PURCHASE: { type: 'string' },
    STANDARD_EVENT_PURCHASE: { type: 'string' },
    STANDARD_EVENT_RATE: { type: 'string' },
    STANDARD_EVENT_SEARCH: { type: 'string' },
    STANDARD_EVENT_SHARE: { type: 'string' },
    STANDARD_EVENT_SPEND_CREDITS: { type: 'string' },
    STANDARD_EVENT_UNLOCK_ACHIEVEMENT: { type: 'string' },
    STANDARD_EVENT_VIEW_CART: { type: 'string' },
    STANDARD_EVENT_VIEW_ITEM: { type: 'string' },
    STANDARD_EVENT_VIEW_ITEMS: { type: 'string' },
    getConstants: { type: 'function' },
    createUniversalObject: { type: 'function', functionType: 'promise' },
    disableTracking: { type: 'function', functionType: 'async' },
    generateShortUrl: { type: 'function', functionType: 'promise' },
    getCreditHistory: { type: 'function', functionType: 'promise' },
    getFirstReferringParams: { type: 'function', functionType: 'promise' },
    getLatestReferringParams: { type: 'function', functionType: 'promise' },
    getShortUrl: { type: 'function', functionType: 'promise' },
    initializeBranch: { type: 'function', functionType: 'promise' },
    isTrackingDisabled: { type: 'function', functionType: 'promise' },
    listOnSpotlight: { type: 'function', functionType: 'promise' },
    loadRewards: { type: 'function', functionType: 'promise' },
    logEvent: { type: 'function', functionType: 'promise' },
    logout: { type: 'function', functionType: 'async' },
    openURL: { type: 'function', functionType: 'async' },
    redeemInitSessionResult: { type: 'function', functionType: 'promise' },
    redeemRewards: { type: 'function', functionType: 'promise' },
    registerView: { type: 'function', functionType: 'promise' },
    releaseUniversalObject: { type: 'function', functionType: 'async' },
    sendCommerceEvent: { type: 'function', functionType: 'promise' },
    setIdentity: { type: 'function', functionType: 'async' },
    showShareSheet: { type: 'function', functionType: 'promise' },
    userCompletedAction: { type: 'function', functionType: 'async' },
    userCompletedActionOnUniversalObject: { type: 'function', functionType: 'promise' },
  },
  RNBranchEventEmitter: {
    getConstants: { type: 'function' },
    addListener: { type: 'function', functionType: 'async' },
    removeListeners: { type: 'function', functionType: 'async' },
  },
  RNCAppearance: {
    getConstants: { type: 'function' },
    addListener: { type: 'function', functionType: 'async' },
    getPreferences: { type: 'function', functionType: 'sync' },
    removeListeners: { type: 'function', functionType: 'async' },
  },
  RNCAppearanceProvider: {},
  RNCNetInfo: {
    getConstants: { type: 'function' },
    addListener: { type: 'function', functionType: 'async' },
    getCurrentState: { type: 'function', functionType: 'promise' },
    removeListeners: { type: 'function', functionType: 'async' },
  },
  RNCSafeAreaView: {},
  RNCWebViewManager: {
    getConstants: { type: 'function' },
    goBack: { type: 'function', functionType: 'async' },
    goForward: { type: 'function', functionType: 'async' },
    injectJavaScript: { type: 'function', functionType: 'async' },
    postMessage: { type: 'function', functionType: 'async' },
    reload: { type: 'function', functionType: 'async' },
    startLoadWithResult: { type: 'function', functionType: 'async' },
    stopLoading: { type: 'function', functionType: 'async' },
  },
  RNGestureHandlerButton: {},
  RNGestureHandlerModule: {
    Direction: { type: 'object' },
    State: { type: 'object' },
    getConstants: { type: 'function' },
    addListener: { type: 'function', functionType: 'async' },
    attachGestureHandler: { type: 'function', functionType: 'async' },
    createGestureHandler: { type: 'function', functionType: 'async' },
    dropGestureHandler: { type: 'function', functionType: 'async' },
    handleClearJSResponder: { type: 'function', functionType: 'async' },
    handleSetJSResponder: { type: 'function', functionType: 'async' },
    removeListeners: { type: 'function', functionType: 'async' },
    updateGestureHandler: { type: 'function', functionType: 'async' },
  },
  RNSScreenContainerManager: {},
  RNSScreenManager: {},
  RNSVGCircleManager: {},
  RNSVGClipPathManager: {},
  RNSVGDefsManager: {},
  RNSVGEllipseManager: {},
  RNSVGGroupManager: {},
  RNSVGImageManager: {},
  RNSVGLineManager: {},
  RNSVGLinearGradientManager: {},
  RNSVGMaskManager: {},
  RNSVGNodeManager: {},
  RNSVGPathManager: {},
  RNSVGPatternManager: {},
  RNSVGRadialGradientManager: {},
  RNSVGRectManager: {},
  RNSVGRenderableManager: {},
  RNSVGSvgViewManager: {
    getConstants: { type: 'function' },
    toDataURL: { type: 'function', functionType: 'async' },
  },
  RNSVGSymbolManager: {},
  RNSVGTSpanManager: {},
  RNSVGTextManager: {},
  RNSVGTextPathManager: {},
  RNSVGUseManager: {},
  RNSharedElementTransition: {
    getConstants: { type: 'function' },
    configure: { type: 'function', functionType: 'promise' },
  },
  RNViewShot: {
    getConstants: { type: 'function' },
    captureRef: { type: 'function', functionType: 'promise' },
    captureScreen: { type: 'function', functionType: 'promise' },
    releaseCapture: { type: 'function', functionType: 'async' },
  },
  ReanimatedModule: {
    getConstants: { type: 'function' },
    addListener: { type: 'function', functionType: 'async' },
    animateNextTransition: { type: 'function', functionType: 'async' },
    attachEvent: { type: 'function', functionType: 'async' },
    configureProps: { type: 'function', functionType: 'async' },
    connectNodeToView: { type: 'function', functionType: 'async' },
    connectNodes: { type: 'function', functionType: 'async' },
    createNode: { type: 'function', functionType: 'async' },
    detachEvent: { type: 'function', functionType: 'async' },
    disconnectNodeFromView: { type: 'function', functionType: 'async' },
    disconnectNodes: { type: 'function', functionType: 'async' },
    dropNode: { type: 'function', functionType: 'async' },
    getValue: { type: 'function', functionType: 'async' },
    removeListeners: { type: 'function', functionType: 'async' },
  },
};