// @flow export type DeviceType = 'Handset' | 'Tablet' | 'Tv' | 'Desktop' | 'unknown'; export type BatteryState = 'unknown' | 'unplugged' | 'charging' | 'full'; export type PowerState = { batteryLevel: number, batteryState: BatteryState, lowPowerMode: boolean, [key: string]: any, }; export type LocationProviderInfo = { [key: string]: boolean, }; export type AsyncHookResult = { loading: boolean, result: T, }; // ExposedNativeMethods + DeviceInfoModule declare module.exports: { getAndroidId: () => Promise, getAndroidIdSync: () => string, getApiLevel: () => Promise, getApiLevelSync: () => number, getApplicationName: () => string, getAvailableLocationProviders: () => Promise, getAvailableLocationProvidersSync: () => LocationProviderInfo, getBaseOs: () => Promise, getBaseOsSync: () => string, getBatteryLevel: () => Promise, getBatteryLevelSync: () => number, getBootloader: () => Promise, getBootloaderSync: () => string, getBrand: () => string, getBuildId: () => Promise, getBuildIdSync: () => string, getBuildNumber: () => string, getBundleId: () => string, getCarrier: () => Promise, getCarrierSync: () => string, getCodename: () => Promise, getCodenameSync: () => string, getDevice: () => Promise, getDeviceId: () => string, getDeviceName: () => Promise, getDeviceNameSync: () => string, getDeviceSync: () => string, getDeviceType: () => string, getDisplay: () => Promise, getDisplaySync: () => string, getFingerprint: () => Promise, getFingerprintSync: () => string, getFirstInstallTime: () => Promise, getFirstInstallTimeSync: () => number, getFontScale: () => Promise, getFontScaleSync: () => number, getFreeDiskStorage: () => Promise, getFreeDiskStorageOld: () => Promise, getFreeDiskStorageSync: () => number, getFreeDiskStorageOldSync: () => number, getHardware: () => Promise, getHardwareSync: () => string, getHost: () => Promise, getHostSync: () => string, getIncremental: () => Promise, getIncrementalSync: () => string, getInstallerPackageName: () => Promise, getInstallerPackageNameSync: () => string, getInstallReferrer: () => Promise, getInstallReferrerSync: () => string, getInstanceId: () => Promise, getInstanceIdSync: () => string, getIpAddress: () => Promise, getIpAddressSync: () => string, getLastUpdateTime: () => Promise, getLastUpdateTimeSync: () => number, getMacAddress: () => Promise, getMacAddressSync: () => string, getManufacturer: () => Promise, getManufacturerSync: () => string, getMaxMemory: () => Promise, getMaxMemorySync: () => number, getModel: () => string, getPhoneNumber: () => Promise, getPhoneNumberSync: () => string, getPowerState: () => Promise, getPowerStateSync: () => PowerState | {}, getPreviewSdkInt: () => Promise, getPreviewSdkIntSync: () => number, getProduct: () => Promise, getProductSync: () => string, getReadableVersion: () => string, getSecurityPatch: () => Promise, getSecurityPatchSync: () => string, getSerialNumber: () => Promise, getSerialNumberSync: () => string, getSystemAvailableFeatures: () => Promise, getSystemAvailableFeaturesSync: () => string[], getSystemName: () => string, getSystemVersion: () => string, getTags: () => Promise, getTagsSync: () => string, getTotalDiskCapacity: () => Promise, getTotalDiskCapacityOld: () => Promise, getTotalDiskCapacitySync: () => number, getTotalDiskCapacityOldSync: () => number, getTotalMemory: () => Promise, getTotalMemorySync: () => number, getType: () => Promise, getTypeSync: () => string, getUniqueId: () => Promise, getUniqueIdSync: () => string, getUsedMemory: () => Promise, getUsedMemorySync: () => number, getUserAgent: () => Promise, getUserAgentSync: () => string, getVersion: () => string, getBrightness: () => Promise, getBrightnessSync: () => number, hasNotch: () => boolean, hasSystemFeature: (feature: string) => Promise, hasSystemFeature: (feature: string) => Promise, hasSystemFeatureSync: (feature: string) => boolean, hasSystemFeatureSync: (feature: string) => boolean, hasGms: () => Promise, hasGmsSync: () => boolean, hasHms: () => Promise, hasHmsSync: () => boolean, isAirplaneMode: () => Promise, isAirplaneModeSync: () => boolean, isBatteryCharging: () => Promise, isBatteryChargingSync: () => boolean, isCameraPresent: () => Promise, isCameraPresentSync: () => boolean, isEmulator: () => Promise, isEmulatorSync: () => boolean, isHeadphonesConnected: () => Promise, isHeadphonesConnectedSync: () => boolean, isLandscape: () => Promise, isLandscapeSync: () => boolean, isLocationEnabled: () => Promise, isLocationEnabledSync: () => boolean, isPinOrFingerprintSet: () => Promise, isPinOrFingerprintSetSync: () => boolean, isMouseConnected: () => Promise, isMouseConnectedSync: () => boolean, isKeyboardConnected: () => Promise, isKeyboardConnectedSync: () => boolean, isTabletMode: () => Promise, isTablet: () => boolean, supported32BitAbis: () => Promise, supported32BitAbisSync: () => string[], supported64BitAbis: () => Promise, supported64BitAbisSync: () => string[], supportedAbis: () => Promise, supportedAbisSync: () => string[], syncUniqueId: () => Promise, useBatteryLevel: () => number | null, useBatteryLevelIsLow: () => number | null, useDeviceName: () => AsyncHookResult, useFirstInstallTime: () => AsyncHookResult, useHasSystemFeature: (feature: string) => AsyncHookResult, useIsEmulator: () => AsyncHookResult, usePowerState: () => PowerState | {}, useManufacturer: () => AsyncHookResult, useIsHeadphonesConnected: () => AsyncHookResult, useBrightness: () => number | null, };