#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(TRTCReactNativeSdk, NSObject)
// sdk manager begin
RCT_EXTERN_METHOD(sharedInstance: (RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getSDKVersion: (RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopLocalPreview: (RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(enterRoom:(NSDictionary)params
                  withScene:(int)scene
                 withResolver:(RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(exitRoom:(RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getAudioEffectManager:(RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getDeviceManager:(RCTPromiseResolveBlock)resolve
                 withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getBeautyManager:(RCTPromiseResolveBlock)resolve
                  withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(connectOtherRoom:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(disconnectOtherRoom: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(switchRole:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(switchRoom:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVideoMuteImage:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setWatermark:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startPublishing:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopRemoteView:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopPublishing: (RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startPublishCDNStream:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopPublishCDNStream: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setMixTranscodingConfig:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(muteLocalVideo:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(muteRemoteVideoStream:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setRemoteRenderParams:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVideoEncoderParam:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setNetworkQosParam:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVideoEncoderRotation:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVideoEncoderMirror:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setGSensorMode:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(muteAllRemoteVideoStreams:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startLocalAudio:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopLocalAudio: (RCTPromiseResolveBlock)resolve
  withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(muteLocalAudio:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(muteRemoteAudio:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(muteAllRemoteAudio:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setRemoteAudioVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setAudioCaptureVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getAudioCaptureVolume: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setAudioPlayoutVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getAudioPlayoutVolume: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(enableAudioVolumeEvaluation:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startAudioRecording:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopAudioRecording: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(enable3DSpatialAudioEffect:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(updateSelf3DSpatialPosition:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(updateRemote3DSpatialPosition:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(set3DSpatialReceivingRange:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopSpeedTest: (RCTPromiseResolveBlock)resolve
  withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(sendSEIMsg:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(sendCustomCmdMsg:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startSpeedTest:(NSDictionary)param
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(callExperimentalAPI:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
// sdk manager end
// audio manager begin
RCT_EXTERN_METHOD(enableVoiceEarMonitor:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVoiceEarMonitorVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVoiceReverbType:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVoiceChangerType:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setVoiceCaptureVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startPlayMusic:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopPlayMusic:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(pausePlayMusic:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(resumePlayMusic:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setMusicPublishVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setMusicPlayoutVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setAllMusicVolume:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setMusicPitch:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setMusicSpeedRate:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getMusicCurrentPosInMS:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(seekMusicToPosInMS:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getMusicDurationInMS:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
// audio manager end
// device manager begin
RCT_EXTERN_METHOD(isFrontCamera:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(switchCamera:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getCameraZoomMaxRatio:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setCameraZoomRatio:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(enableCameraAutoFocus:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(isAutoFocusEnabled:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setCameraFocusPosition:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(enableCameraTorch:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setSystemVolumeType:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setAudioRoute:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
// device manager end
// beauty manager begin
RCT_EXTERN_METHOD(setBeautyStyle:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setFilter:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setFilterStrength:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setBeautyLevel:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setWhitenessLevel:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(setRuddyLevel:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(enableSharpnessEnhancement:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startLocalRecording:(NSDictionary)params
  withResolver:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(stopLocalRecording:(RCTPromiseResolveBlock)resolve
    withRejecter:(RCTPromiseRejectBlock)reject)
// beauty manager end
@end
