import { NativeModules, NativeEventEmitter, EmitterSubscription, Insets, Platform } from 'react-native'; export interface Module { setVerbose(verbose: boolean): void; enableSafeAreaEvent(enable: boolean): void; initialSafeArea: undefined|Required; getSafeArea(): Promise>; measureViewInsets(node: number): Promise>; } export interface SafeAreaEvent { safeArea?: Required; keyboardArea?: { start: { x: number; y: number; width: number; height: number; }; end: { x: number; y: number; width: number; height: number; }; duration: number; }; } export const Module = (Platform.OS === 'ios') ? NativeModules.ReactNativeMoSafeArea as Module : undefined; export const Events = Module ? new NativeEventEmitter(NativeModules.ReactNativeMoSafeArea) as { addListener(eventType: 'ReactNativeMoSafeArea', listener: (event: SafeAreaEvent) => void): EmitterSubscription; } : undefined;