/* eslint-disable @typescript-eslint/no-wrapper-object-types */ import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; import type { EventEmitter } from 'react-native/Libraries/Types/CodegenTypes'; export interface Spec extends TurboModule { // OneSignal root initialize(appId: string): void; login(externalId: string): void; logout(): void; setPrivacyConsentRequired(required: boolean): void; setPrivacyConsentGiven(granted: boolean): void; // Debug setLogLevel(logLevel: number): void; setAlertLevel(logLevel: number): void; // Live Activities (iOS only, stubs on Android) enterLiveActivity(activityId: string, token: string, callback: (result: Object) => void): void; /** @deprecated Currently unsupported, avoid using this method. */ exitLiveActivity(activityId: string, callback: (result: Object) => void): void; setPushToStartToken(activityType: string, token: string): void; removePushToStartToken(activityType: string): void; setupDefaultLiveActivity(options: Object | null): void; startDefaultLiveActivity(activityId: string, attributes: Object, content: Object): void; // Push Subscription addPushSubscriptionObserver(): void; getPushSubscriptionId(): Promise; getPushSubscriptionToken(): Promise; getOptedIn(): Promise; optIn(): void; optOut(): void; // User addUserStateObserver(): void; getOnesignalId(): Promise; getExternalId(): Promise; setLanguage(language: string): void; addAlias(label: string, id: string): void; addAliases(aliases: Object): void; removeAlias(label: string): void; removeAliases(labels: string[]): void; addEmail(email: string): void; removeEmail(email: string): void; addSms(smsNumber: string): void; removeSms(smsNumber: string): void; addTag(key: string, value: string): void; removeTag(key: string): void; addTags(tags: Object): void; removeTags(keys: string[]): void; getTags(): Promise; trackEvent(name: string, properties: Object | null): void; // Notifications hasNotificationPermission(): Promise; requestNotificationPermission(fallbackToSettings: boolean): Promise; canRequestNotificationPermission(): Promise; registerForProvisionalAuthorization(callback: (accepted: boolean) => void): void; permissionNative(): Promise; addNotificationClickListener(): void; addNotificationForegroundLifecycleListener(): void; addPermissionObserver(): void; clearAllNotifications(): void; removeNotification(id: number): void; removeGroupedNotifications(id: string): void; displayNotification(notificationId: string): void; preventDefault(notificationId: string): void; // In-App Messages addInAppMessageClickListener(): void; addInAppMessagesLifecycleListener(): void; addTrigger(key: string, value: string): void; addTriggers(triggers: Object): void; removeTrigger(key: string): void; removeTriggers(keys: string[]): void; clearTriggers(): void; paused(pause: boolean): void; getPaused(): Promise; // Location requestLocationPermission(): void; setLocationShared(shared: boolean): void; isLocationShared(): Promise; // Session addOutcome(name: string): void; addUniqueOutcome(name: string): void; addOutcomeWithValue(name: string, value: number): void; // Events readonly onPermissionChanged: EventEmitter; readonly onSubscriptionChanged: EventEmitter; readonly onUserStateChanged: EventEmitter; readonly onNotificationWillDisplay: EventEmitter; readonly onNotificationClicked: EventEmitter; readonly onInAppMessageClicked: EventEmitter; readonly onInAppMessageWillDisplay: EventEmitter; readonly onInAppMessageDidDisplay: EventEmitter; readonly onInAppMessageWillDismiss: EventEmitter; readonly onInAppMessageDidDismiss: EventEmitter; } export default TurboModuleRegistry.getEnforcing('OneSignal');