#import <React/RCTViewManager.h>

@interface RCT_EXTERN_REMAP_MODULE(NativePlayerView, RNPlayerViewManager, RCTViewManager)

RCT_EXPORT_VIEW_PROPERTY(onBmpEvent, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlayerActive, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlayerError, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlayerWarning, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpDestroy, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpMuted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpUnmuted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpReady, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPaused, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlay, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlaying, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlaybackFinished, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSeek, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSeeked, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpTimeShift, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpTimeShifted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpStallStarted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpStallEnded, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpTimeChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSourceLoad, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSourceLoaded, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSourceUnloaded, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSourceError, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSourceWarning, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAudioAdded, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAudioRemoved, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAudioChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSubtitleAdded, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSubtitleRemoved, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpSubtitleChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpDownloadFinished, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPictureInPictureEnter, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPictureInPictureEntered, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPictureInPictureExit, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPictureInPictureExited, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdBreakFinished, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdBreakStarted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdClicked, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdError, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdFinished, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdManifestLoad, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdManifestLoaded, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdQuartile, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdScheduled, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdSkipped, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpAdStarted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpVideoDownloadQualityChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpVideoPlaybackQualityChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpFullscreenEnabled, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpFullscreenDisabled, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpFullscreenEnter, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpFullscreenExit, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastAvailable, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastPaused, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastPlaybackFinished, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastPlaying, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastStarted, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastStart, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastStopped, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastTimeUpdated, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCastWaitingForDevice, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPictureInPictureAvailabilityChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpPlaybackSpeedChanged, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCueEnter, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onBmpCueExit, RCTBubblingEventBlock)
RCT_EXPORT_VIEW_PROPERTY(config, NSDictionary)

RCT_EXTERN_METHOD(attachPlayer:(nonnull NSNumber *)viewId playerId:(NSString *)playerId playerConfig:(nullable NSDictionary *)playerConfig)
RCT_EXTERN_METHOD(attachFullscreenBridge:(nonnull NSNumber *)viewId fullscreenBridgeId:(NSString *)fullscreenBridgeId)
RCT_EXTERN_METHOD(setCustomMessageHandlerBridgeId:(nonnull NSNumber *)viewId customMessageHandlerBridgeId:(NSString *)fullscreenBridgeId)
RCT_EXTERN_METHOD(setFullscreen:(nonnull NSNumber *)viewId isFullscreen:(BOOL)isFullscreen)
RCT_EXTERN_METHOD(setScalingMode:(nonnull NSNumber *)viewId scalingMode:(NSString *)scalingMode)
RCT_EXTERN_METHOD(setPictureInPicture:(nonnull NSNumber *)viewId enterPictureInPicture:(BOOL)enterPictureInPicture)

@end
