import { NativeModules, NativeEventEmitter, Platform } from 'react-native' interface XuqmPushModuleInterface { detectVendor: () => Promise registerPush: () => Promise } const _native = NativeModules.XuqmPushModule as XuqmPushModuleInterface | undefined const _eventEmitter = _native ? new NativeEventEmitter(_native as any) : null export function isNativePushAvailable(): boolean { return !!_native } export async function detectVendorNative(): Promise { if (!_native?.detectVendor) return Platform.OS === 'ios' ? 'APNS' : 'FCM' return _native.detectVendor() } export async function registerPushNative(): Promise { if (!_native?.registerPush) return await _native.registerPush() } export function addPushTokenListener( callback: (event: { token: string; vendor: string }) => void, ): () => void { if (!_eventEmitter) { return () => {} } const subscription = _eventEmitter.addListener('XuqmPushToken', callback) return () => subscription.remove() }