/* * Version for React Native * © 2020 YANDEX * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * https://yandex.com/legal/appmetrica_sdk_agreement/ */ import {NativeModules} from 'react-native'; import Ecommerce from './src/ecommerce'; const {AppMetrica} = NativeModules; type AppMetricaConfig = { apiKey: string, appVersion?: string, crashReporting?: boolean, anrMonitoring?: boolean, anrMonitoringTimeout?: number, firstActivationAsUpdate?: boolean, location?: AppMetricaLocation, locationTracking?: boolean, logs?: boolean, sessionTimeout?: number, preloadInfo?: AppMetricaPreloadInfo, dataSendingEnabled?: boolean, revenueAutoTrackingEnabled?: boolean; sessionsAutoTrackingEnabled?: boolean; appOpenTrackingEnabled?: boolean, appBuildNumber?: number, userProfileID?: string, dispatchPeriodSeconds?: number, maxReportsCount?: number, maxReportsInDatabaseCount?: number, errorEnvironment?: Record, appEnvironment?: Record, customHosts?: Array, // Only Android installedAppCollecting?: boolean, nativeCrashReporting?: boolean, deviceType?: string, additionalConfig?: Record, // Only iOS activationAsSessionStart?: boolean, accurateLocationTracking?: boolean, allowsBackgroundLocationUpdates?: boolean, } type AppMetricaPreloadInfo = { trackingId: string, additionalInfo?: Object, } type AppMetricaLocation = { latitude: number, longitude: number, altitude?: number, accuracy?: number, course?: number, speed?: number, timestamp?: number } type AppMetricaDeviceIdReason = 'UNKNOWN' | 'NETWORK' | 'INVALID_RESPONSE'; type AppMetricaDeviceIdListener = (deviceId?: String, deviceIdHash?: String, deviceUuid?: String, reason?: AppMetricaDeviceIdReason) => void export type { AppMetricaECommerceScreen, AppMetricaECommerceReferrer, AppMetricaECommercePrice, AppMetricaECommerceProduct, AppMetricaECommerceCartItem, AppMetricaECommerceOrder, } from './src/ecommerce' export type { AppMetricaConfig, AppMetricaPreloadInfo, AppMetricaLocation, AppMetricaDeviceIdReason, AppMetricaDeviceIdListener, }; export default { getEcommerce(): typeof Ecommerce { return Ecommerce; }, activate(config: AppMetricaConfig) { AppMetrica.activate(config); }, // Android async getLibraryApiLevel(): Promise { return AppMetrica.getLibraryApiLevel(); }, async getLibraryVersion(): Promise { return AppMetrica.getLibraryVersion(); }, pauseSession() { AppMetrica.pauseSession(); }, reportAppOpen(deeplink: string | null = null) { AppMetrica.reportAppOpen(deeplink); }, reportError(error: string, reason: Object) { AppMetrica.reportError(error); }, reportEvent(eventName: string, attributes: Object | null = null) { AppMetrica.reportEvent(eventName, attributes); }, requestAppMetricaDeviceID(listener: AppMetricaDeviceIdListener) { AppMetrica.requestAppMetricaDeviceID(listener); }, resumeSession() { AppMetrica.resumeSession(); }, sendEventsBuffer() { AppMetrica.sendEventsBuffer(); }, setLocation(location: AppMetricaLocation | null) { AppMetrica.setLocation(location); }, setLocationTracking(enabled: boolean) { AppMetrica.setLocationTracking(enabled); }, setUserProfileID(userProfileID?: string) { AppMetrica.setUserProfileID(userProfileID); }, };