import { NativeEventEmitter, type NativeModule, NativeModules, } from 'react-native'; import { LINKING_ERROR } from '../constants/FWErrorMessage'; import type AdBadgeConfiguration from '../models/AdBadgeConfiguration'; import type TrackPurchaseParameters from '../models/TrackPurchaseParameters'; import type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration'; import type { DataTrackingLevel } from '../models/DataTrackingLevel'; import type LivestreamPlayerDesignVersion from '../models/LivestreamPlayerDesignVersion'; import type ShortVideoPlayerDesignVersion from '../models/ShortVideoPlayerDesignVersion'; const FireworkSDKModule = NativeModules.FireworkSDK ? NativeModules.FireworkSDK : new Proxy( {}, { get() { throw new Error(LINKING_ERROR); }, } ); interface IFireworkSDKModule extends NativeModule { markInitCalled(): Promise; openVideoPlayer(url: string, config?: VideoPlayerNativeConfiguration): void; openVideoPlayerWithSource(params: Record): void; setVideoFeedClickCallbackEnabled(enabled: boolean): void; // Only supported on iOS setCustomCTAClickEnabled(enabled: boolean): void; setShareBaseURL(url?: string): Promise; setVideoPlaybackEventEnabled(enabled: boolean): void; setAdBadgeConfiguration(config?: AdBadgeConfiguration): Promise; trackPurchase(parameters: TrackPurchaseParameters): void; changeAppLanguage(language?: string | null): Promise; pausePlayer(callbackId: number | string): void; // Only supported on iOS resumePlayer(callbackId: number | string): void; // Only supported on iOS setDataTrackingLevel(level?: DataTrackingLevel): Promise; setLivestreamPlayerDesignVersion( version: LivestreamPlayerDesignVersion ): Promise; setShortVideoPlayerDesignVersion( version: ShortVideoPlayerDesignVersion ): Promise; setPreventPipOnLeave(prevent: boolean): Promise; } const FireworkSDKModuleEventEmitter = new NativeEventEmitter(FireworkSDKModule); export { FireworkSDKModuleEventEmitter }; export default FireworkSDKModule as IFireworkSDKModule;