//
//  HWMSDKPrivateConfService.h
//  HWMSDKSDK
//
//  Automatically generated file. DO NOT MODIFY!!!
//

#import <Foundation/Foundation.h>
#import "HWMSDKCommonDefine.h"
#import "HWMSDKAllModelIndex.h"

NS_ASSUME_NONNULL_BEGIN

typedef void(^HWMSDKJoinConfByVerifyCodeSuccessBlock) (HWMSDKJoinConfResultInfoModel * joinConfResultInfo);
typedef void(^HWMSDKJoinConfByVerifyCodeFailedBlock) (NSError * _Nullable error, HWMSDKJoinConfFailedInfoModel * joinConfFailedInfo);

typedef void(^HWMSDKJoinConfDirectSuccessBlock) (HWMSDKJoinConfResultInfoModel * joinConfResultInfo);
typedef void(^HWMSDKJoinConfDirectFailedBlock) (NSError * _Nullable error, HWMSDKJoinConfFailedInfoModel * joinConfFailedInfo);

typedef void(^HWMSDKJoinConfByLinkSuccessBlock) (HWMSDKJoinConfResultInfoModel * joinConfResultInfo);
typedef void(^HWMSDKJoinConfByLinkFailedBlock) (NSError * _Nullable error, HWMSDKJoinConfFailedInfoModel * joinConfFailedInfo);

typedef void(^HWMSDKJoinConfByNonceSuccessBlock) (HWMSDKJoinConfResultInfoModel * joinConfResultInfo);
typedef void(^HWMSDKJoinConfByNonceFailedBlock) (NSError * _Nullable error, HWMSDKJoinConfFailedInfoModel * joinConfFailedInfo);

typedef void(^HWMSDKJoinConfByRandomSuccessBlock) (HWMSDKJoinConfResultInfoModel * joinConfResultInfo);
typedef void(^HWMSDKJoinConfByRandomFailedBlock) (NSError * _Nullable error, HWMSDKJoinConfFailedInfoModel * joinConfFailedInfo);

typedef void(^HWMSDKBookCtdConfSuccessBlock) (HWMSDKCreateConfResultModel * bookCtdConfResult);
typedef void(^HWMSDKBookCtdConfFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKRequestVerifycodeSuccessBlock) (void);
typedef void(^HWMSDKRequestVerifycodeFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKRefreshSliderSuccessBlock) (HWMSDKGetSliderResultInfoModel * sliderInfo);
typedef void(^HWMSDKRefreshSliderFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKCheckNeedSliderAuthSuccessBlock) (HWMSDKGetSliderResultInfoModel * sliderInfo);
typedef void(^HWMSDKCheckNeedSliderAuthFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKStartQrCodePairSuccessBlock) (void);
typedef void(^HWMSDKStartQrCodePairFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKStartQrCodePairForceSuccessBlock) (void);
typedef void(^HWMSDKStartQrCodePairForceFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKEndQrCodePairSuccessBlock) (void);
typedef void(^HWMSDKEndQrCodePairFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKJoinPairConfSuccessBlock) (void);
typedef void(^HWMSDKJoinPairConfFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKQueryHistoryConflistSuccessBlock) (HWMSDKHistoryConfListInfoModel * confListInfo);
typedef void(^HWMSDKQueryHistoryConflistFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKQueryHistoryConfAttendeeSuccessBlock) (HWMSDKHistoryConfAttendeeResultModel * attendeeResult);
typedef void(^HWMSDKQueryHistoryConfAttendeeFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKQueryHistoryConfRecordFileSuccessBlock) (NSString * fileUrl);
typedef void(^HWMSDKQueryHistoryConfRecordFileFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKQueryLocalHistoryConflistSuccessBlock) (HWMSDKHistoryConfListInfoModel * confListInfo);
typedef void(^HWMSDKQueryLocalHistoryConflistFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKQueryBasicConfInfoSuccessBlock) (HWMSDKBasicConfInfoModel * confListInfo);
typedef void(^HWMSDKQueryBasicConfInfoFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKQueryNonceByTypeSuccessBlock) (NSString * reasonDesc, NSString * nonce);
typedef void(^HWMSDKQueryNonceByTypeFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKInviteHardTerminalByScanQRCodeSuccessBlock) (void);
typedef void(^HWMSDKInviteHardTerminalByScanQRCodeFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKAiConfRecordSuccessBlock) (NSUInteger isOpen);
typedef void(^HWMSDKAiConfRecordFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKSetChatPermissionSuccessBlock) (HWMChatPermission chatPermission);
typedef void(^HWMSDKSetChatPermissionFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKSetExtendConfDurationSuccessBlock) (void);
typedef void(^HWMSDKSetExtendConfDurationFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKSetAnnotationPermissionSuccessBlock) (BOOL isConfLevel);
typedef void(^HWMSDKSetAnnotationPermissionFailedBlock) (NSError * _Nullable error);

typedef void(^HWMSDKStartAudioMixSuccessBlock) (NSInteger sampleRate);
typedef void(^HWMSDKStartAudioMixFailedBlock) (NSError * _Nullable error);


@protocol HWMSDKPrivateConfMgrNotify <NSObject>

@optional
/// [en]This class is about the notification of data conference parameters.(Used by mobile terminal) [cn]数据会议参数通知(移动端使用) :joinDataConf
- (void)onJoinShareConfParamNotify:(HWMSDKJoinShareConfParamInfoModel *)joinShareConfParamInfo;
/// [en]This class is about pair universal info. [cn]配对通用信息通知 :disable
- (void)onPairUniversalInfoNotify:(HWMSDKPairUniversalInfoModel *)pairUniversalInfo;
/// [en]This class is about data conf leave notify. [cn]离开数据会议通知 :disable
- (void)onDataConfLeaveNotify;
/// [en]This class is about data conf join notify. [cn]加入数据会议通知 :disable
- (void)onDataConfJoinNotify;
/// [en]This class is about paired or canceled. [cn]配对事件通知 :disable
- (void)onPairedOrCanceledNotify:(HWMSDKPairEventInfoModel *)pairEventInfo;
/// [en]This class is about the notification of upload key log. [cn]关键日志上传通知
- (void)onUploadKeyLogNotify:(HWMSDKUploadKeyLogInfoModel *)keyLogInfo;
/// [en]This class is about the notification of anonymous membership account cancellation. [cn]匿名入会账户注销通知 :imLogout
- (void)onAnonyJoinConfLogoutNotify:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc;
/// [en]This class is about paired or canceled. [cn]收到配对请求通知 :disable
- (void)onPairRequestNotify:(HWMSDKPairReqInfoModel *)pairReqInfo;
/// [en]This class is about site info notify. [cn]站点信息通知
- (void)onSiteInfoNotify:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc siteInfo:(NSString *)siteInfo;
/// [en] [cn]音视频媒体传输模式通知
- (void)onMediaTransModeNotify:(NSUInteger)mediaTransMode;
/// [en]This class is about the callback of transfering point to point call to conference. [cn]MMR立即会议记录回调
- (void)onP2PConfRecordNotify:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc recordInfo:(HWMSDKP2PConfRecordInfoModel *)recordInfo;
/// [en] [cn]异常断开的会议的通知
- (void)onAbnormalLeaveMeetingNotify:(HWMSDKAbnormalLeaveMeetingInfoModel *)abnormalLeaveMeetingInfo;

@end

@protocol HWMSDKPrivateConfStateNotify <NSObject>

@optional
/// [en] [cn]会议状态变更: 是否支持AI录制的通知回调
- (void)onConfSupportAiRecordChanged:(BOOL)supportAiRecord;
/// [en] [cn]支持投票功能的通知：返回true则为支持，返回false则认为不支持
- (void)onVoteInfoNotify:(HWMSDKVoteInfoModel *)voteInfo;
/// [en] [cn]会议状态变更: 共享标注权限变更
- (void)onAnnotationPermissionChanged:(HWMAnnotationPermission)permission isConfLevel:(BOOL)isConfLevel;
/// [en]Notify of conf event info [cn]会中事件信息上报通知
- (void)onConfEventInfoNotify:(NSString *)eventInfo;

@end

@protocol HWMSDKPrivateConfCtrlNotify <NSObject>

@optional
/// [en]xxxx [cn]本地录制收到视频流
- (void)onLocalRecordVideoFrameNotify:(HWMSDKVideoFrameDataModel *)videoFrameData;
/// [en]xxxx [cn]本地录制收到音频流
- (void)onLocalRecordAudioFrameNotify:(HWMSDKAudioFrameDataModel *)audioFrameData;
/// [en]xxxx [cn]本地录制收到数据流，包括白板共享标注
- (void)onLocalRecordDataFrameNotify:(HWMSDKVideoFrameDataModel *)dataFrameData;
/// [en]xxxx [cn]本地录制收到图片流
- (void)onLocalRecordImageFrameNotify:(HWMSDKVideoFrameDataModel *)imageFrameData;
/// [en]This function is about to info conf end [cn]收到会议即将结束通知(会议结束前五分钟，由服务端计算)
- (void)onExtendConfNotify:(HWMSDKConfEndNotifyInfoModel *)confEndNotifyInfo;
/// [en]This function is about leave breakout conf [cn]离开分组会议
- (void)onEndBreakoutConfNotify;
/// [en]This function is about applications info [cn]收到会议应用通知消息，json字符串
- (void)onApplicationNotify:(NSString *)applicationJsonInfo;
/// [en]This api is about the callback for get hme sample rate. [cn]获取hme的音频采样率
- (void)onStartAudioMixResult:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc sampleRate:(NSInteger)sampleRate;

@end

@protocol HWMSDKPrivateE2EENotify <NSObject>

@optional
/// [en] [cn]端到端加解密之音频加密回调
- (void)onE2EEAudioEncryptNotify:(HWMSDKMediaFrameBufferModel *)buffer;
/// [en] [cn]端到端加解密之音频解密回调
- (void)onE2EEAudioDecryptNotify:(HWMSDKMediaFrameBufferModel *)buffer;
/// [en] [cn]端到端加解密之视频加密回调
- (void)onE2EEVideoEncryptNotify:(HWMSDKMediaFrameBufferModel *)buffer;
/// [en] [cn]端到端加解密之视频解密回调
- (void)onE2EEVideoDecryptNotify:(HWMSDKMediaFrameBufferModel *)buffer;

@end

@protocol HWMSDKPrivateConfDeviceNotify <NSObject>

@optional

@end

@interface HWMSDKPrivateConfMgrService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addPrivateConfMgrNotifyCallback:(id<HWMSDKPrivateConfMgrNotify>)callback;
- (void)removePrivateConfMgrNotifyCallback:(id<HWMSDKPrivateConfMgrNotify>)callback;
/// [en]This class is about booking CTD conference. [cn]预约CTD会议
- (void)bookCtdConfWithParam:(HWMSDKBookConfParamModel *)param successCallback:(HWMSDKBookCtdConfSuccessBlock)successCallback failedCallback:(HWMSDKBookCtdConfFailedBlock)failedCallback;

/// [en]This class is about starting QR code pairing. [cn]开始二维码配对
- (void)startQrCodePairWithParam:(HWMSDKStartPairParamModel *)param successCallback:(HWMSDKStartQrCodePairSuccessBlock)successCallback failedCallback:(HWMSDKStartQrCodePairFailedBlock)failedCallback;

/// [en]This class is about forcing QR code pairing. [cn]强制二维码配对
- (void)startQrCodePairForceWithParam:(HWMSDKStartPairParamModel *)param successCallback:(HWMSDKStartQrCodePairForceSuccessBlock)successCallback failedCallback:(HWMSDKStartQrCodePairForceFailedBlock)failedCallback;

/// [en] [cn]验证码入会:匿名入会中间调用接口
- (void)joinConfWithVerifyCode:(NSString *)verifyCode autoRegMode:(HWMAutoRegisterMode)autoRegMode successCallback:(HWMSDKJoinConfByVerifyCodeSuccessBlock)successCallback failedCallback:(HWMSDKJoinConfByVerifyCodeFailedBlock)failedCallback;

/// [en]This class is about ending QR code pairing. [cn]结束二维码配对
- (void)endQrCodePairWithSuccessCallback:(HWMSDKEndQrCodePairSuccessBlock)successCallback failedCallback:(HWMSDKEndQrCodePairFailedBlock)failedCallback;

/// [en]This class is about joining the paring conference. [cn]加入配对会议
- (void)joinPairConfWithConfId:(NSString *)confId successCallback:(HWMSDKJoinPairConfSuccessBlock)successCallback failedCallback:(HWMSDKJoinPairConfFailedBlock)failedCallback;

/// [en]This class is about the api of verifying the slider and getting verification code for anonymous conferences. [cn]匿名会议 校验滑块并获取验证码接口
- (void)requestVerifycodeWithSliderPointX:(NSUInteger)sliderPointX costSlideTime:(NSUInteger)costSlideTime successCallback:(HWMSDKRequestVerifycodeSuccessBlock)successCallback failedCallback:(HWMSDKRequestVerifycodeFailedBlock)failedCallback;

/// [en]This class is about the api of refreshing slider for anonymous conferences. [cn]匿名会议 刷新滑块接口
- (void)refreshSliderWithSuccessCallback:(HWMSDKRefreshSliderSuccessBlock)successCallback failedCallback:(HWMSDKRefreshSliderFailedBlock)failedCallback;

/// [en] [cn]会议列表直接入会
- (void)joinConfDirectWithParam:(HWMSDKJoinConfParamModel *)param successCallback:(HWMSDKJoinConfDirectSuccessBlock)successCallback failedCallback:(HWMSDKJoinConfDirectFailedBlock)failedCallback;

/// [en] [cn]通过会议链接加入会议
- (void)joinConfByLinkWithParam:(HWMSDKConfJoinByLinkParamModel *)param successCallback:(HWMSDKJoinConfByLinkSuccessBlock)successCallback failedCallback:(HWMSDKJoinConfByLinkFailedBlock)failedCallback;

/// [en] [cn]通过会议random加入会议
- (void)joinConfByRandomWithParam:(HWMSDKConfJoinByRandomParamModel *)param successCallback:(HWMSDKJoinConfByRandomSuccessBlock)successCallback failedCallback:(HWMSDKJoinConfByRandomFailedBlock)failedCallback;

/// [en]This class is about the api of getting the SMS verification code for anonymous conferences.(SMS :Short Message Service) [cn]匿名会议 获取短信验证码接口
- (void)checkNeedSliderAuthWithPhoneNumber:(NSString *)phoneNumber countryCode:(NSString *)countryCode successCallback:(HWMSDKCheckNeedSliderAuthSuccessBlock)successCallback failedCallback:(HWMSDKCheckNeedSliderAuthFailedBlock)failedCallback;

/// [en]This class is about getting the pair state. [cn]同步获取会议二维码配对状态
- (HWMConfPairState)getConfPairState;

/// [en] [cn]获取会议id的相关信息
- (HWMSDKConfBaseInfoModel *)getConfBaseInfoWithConfId:(NSString *)confId;

/// [en]This class is about the api of set upload key log [cn]设置上传关键日志
- (HWMSDKERR)setUploadKeyLog:(BOOL)isUpload;

/// [en]This class is about init pair server. [cn]初始化配对服务 :disable
- (HWMSDKERR)initPairServerWithPairRole:(HWMPairRoleType)pairRole maxPairNum:(NSUInteger)maxPairNum codeMode:(NSUInteger)codeMode;

/// [en]This class is about accept pair request. [cn]是否准许配对 :disable
- (HWMSDKERR)acceptPairRequestWithPairAcceptInfo:(HWMSDKCallPairAcceptInfoModel *)pairAcceptInfo;

/// [en]This class is about cancel pair. [cn]是否准许配对 :disable
- (HWMSDKERR)cancelPairWithPairId:(NSInteger)pairId reasonCode:(HWMCallPairReasonType)reasonCode;

/// [en]This class is about pair send join conf info. [cn]发送入会结果 :disable
- (HWMSDKERR)pairSendJoinconfInfoWithPairId:(NSInteger)pairId joinResult:(NSUInteger)joinResult;

/// [en]This class is about uninit pair server. [cn]配对去初始化 :disable
- (HWMSDKERR)uninitPairServer;

/// [en]This class is query history conference list. [cn]查询历史会议列表，参数时间为毫秒
- (void)queryHistoryConflistWithBeginTime:(NSUInteger)beginTime endTime:(NSUInteger)endTime successCallback:(HWMSDKQueryHistoryConflistSuccessBlock)successCallback failedCallback:(HWMSDKQueryHistoryConflistFailedBlock)failedCallback;

/// [en]This class is about query history conference attendee infomation. [cn]查询历史会议与会者信息
- (void)queryHistoryConfAttendeeWithConfUuid:(NSString *)confUuid successCallback:(HWMSDKQueryHistoryConfAttendeeSuccessBlock)successCallback failedCallback:(HWMSDKQueryHistoryConfAttendeeFailedBlock)failedCallback;

/// [en]This class is about query history conference record file. [cn]查询录制文件 :disable
- (void)queryHistoryConfRecordFileWithConfUuid:(NSString *)confUuid successCallback:(HWMSDKQueryHistoryConfRecordFileSuccessBlock)successCallback failedCallback:(HWMSDKQueryHistoryConfRecordFileFailedBlock)failedCallback;

/// [en]This class is about query local history conference list. [cn]查询本地历史会议列表，参数时间为毫秒
- (void)queryLocalHistoryConflistWithBeginTime:(NSUInteger)beginTime endTime:(NSUInteger)endTime successCallback:(HWMSDKQueryLocalHistoryConflistSuccessBlock)successCallback failedCallback:(HWMSDKQueryLocalHistoryConflistFailedBlock)failedCallback;

/// [en]This class is about join conf by nonce. [cn]根据随机数加入会议
- (void)joinConfByNonceWithParam:(HWMSDKNonceJoinConfParamModel *)param successCallback:(HWMSDKJoinConfByNonceSuccessBlock)successCallback failedCallback:(HWMSDKJoinConfByNonceFailedBlock)failedCallback;

/// [en] [cn]根据会议Id和密码获取会议的基本信息
- (void)queryBasicConfInfoWithConfId:(NSString *)confId password:(NSString *)password successCallback:(HWMSDKQueryBasicConfInfoSuccessBlock)successCallback failedCallback:(HWMSDKQueryBasicConfInfoFailedBlock)failedCallback;

/// [en] [cn]修改历史会议中数据库的本地录制文件路径 :disable :disable
- (HWMSDKERR)updateHistoryConfInfo:(HWMSDKHistoryConfInfoParamModel *)historyConfInfo;

/// [en] [cn]获取
- (void)queryNonceByType:(HWMNonceType)type successCallback:(HWMSDKQueryNonceByTypeSuccessBlock)successCallback failedCallback:(HWMSDKQueryNonceByTypeFailedBlock)failedCallback;

- (void)cleanBookCtdConfCallbacks;
- (void)cleanStartQrCodePairCallbacks;
- (void)cleanStartQrCodePairForceCallbacks;
- (void)cleanJoinConfByVerifyCodeCallbacks;
- (void)cleanEndQrCodePairCallbacks;
- (void)cleanJoinPairConfCallbacks;
- (void)cleanRequestVerifycodeCallbacks;
- (void)cleanRefreshSliderCallbacks;
- (void)cleanJoinConfDirectCallbacks;
- (void)cleanJoinConfByLinkCallbacks;
- (void)cleanJoinConfByRandomCallbacks;
- (void)cleanCheckNeedSliderAuthCallbacks;
- (void)cleanQueryHistoryConflistCallbacks;
- (void)cleanQueryHistoryConfAttendeeCallbacks;
- (void)cleanQueryHistoryConfRecordFileCallbacks;
- (void)cleanQueryLocalHistoryConflistCallbacks;
- (void)cleanJoinConfByNonceCallbacks;
- (void)cleanQueryBasicConfInfoCallbacks;
- (void)cleanQueryNonceByTypeCallbacks;
@end


@interface HWMSDKPrivateConfCtrlService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addPrivateConfCtrlNotifyCallback:(id<HWMSDKPrivateConfCtrlNotify>)callback;
- (void)removePrivateConfCtrlNotifyCallback:(id<HWMSDKPrivateConfCtrlNotify>)callback;
/// [en]This class is about invite hardterminal user by scan QR Code. [cn]扫码邀请硬终端用户入会
- (void)inviteHardTerminalByScanQRCodeWithParam:(HWMSDKInviteHardTerminalParamModel *)param successCallback:(HWMSDKInviteHardTerminalByScanQRCodeSuccessBlock)successCallback failedCallback:(HWMSDKInviteHardTerminalByScanQRCodeFailedBlock)failedCallback;

/// [en]This class is about dealing with the result notification of AI conference record reported by TUP. [cn]处理TUP上报的AI会议纪要结果通知
- (void)aiConfRecord:(BOOL)isOpen successCallback:(HWMSDKAiConfRecordSuccessBlock)successCallback failedCallback:(HWMSDKAiConfRecordFailedBlock)failedCallback;

/// [en]This class is about setting chat permission. [cn]主席会控：控制聊天权限
- (void)setChatPermission:(HWMChatPermission)chatPermission successCallback:(HWMSDKSetChatPermissionSuccessBlock)successCallback failedCallback:(HWMSDKSetChatPermissionFailedBlock)failedCallback;

/// [en]This class is about data share window [cn]数据会议共享界面观看情况
- (HWMSDKERR)setDataShareWatchParam:(BOOL)isWatching resolutionLevel:(HWMGeneralWatchResolutionLevel)resolutionLevel;

/// [en]This class is about extending conf duration. [cn]设置会议延长时间
- (void)setExtendConfDuration:(NSUInteger)duration successCallback:(HWMSDKSetExtendConfDurationSuccessBlock)successCallback failedCallback:(HWMSDKSetExtendConfDurationFailedBlock)failedCallback;

/// [en]This class is about setting LabelPermission when sharing or as a host. [cn]控制共享标注权限
- (void)setAnnotationPermissionWithType:(HWMAnnotationPermission)type isConfLevel:(BOOL)isConfLevel successCallback:(HWMSDKSetAnnotationPermissionSuccessBlock)successCallback failedCallback:(HWMSDKSetAnnotationPermissionFailedBlock)failedCallback;

/// [en] [cn]设置多人共享类型
- (HWMSDKERR)setMultiShareType:(HWMMultiShareType)type;

/// [en] [cn]离会清空数据，依赖UI清理
- (HWMSDKERR)resetConfData;

- (void)cleanInviteHardTerminalByScanQRCodeCallbacks;
- (void)cleanAiConfRecordCallbacks;
- (void)cleanSetChatPermissionCallbacks;
- (void)cleanSetExtendConfDurationCallbacks;
- (void)cleanSetAnnotationPermissionCallbacks;
@end


@interface HWMSDKPrivateConfStateService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addPrivateConfStateNotifyCallback:(id<HWMSDKPrivateConfStateNotify>)callback;
- (void)removePrivateConfStateNotifyCallback:(id<HWMSDKPrivateConfStateNotify>)callback;
/// [en]This class is about getting the conference state: whether the conference supports the AI recording. [cn]获取会议状态:是否支持AI录制
- (BOOL)getConfSupportAiRecord;

/// [en]This class is about getting the conference state: whether the conference supports set Annotation permission. [cn]获取会议状态:是否支持共享标志权限控制
- (BOOL)getSupportAnnotationPermission;

/// [en]This class is about getting the conference state: Annotation permission. [cn]获取会议状态:获取共享标注权限
- (HWMAnnotationPermission)getAnnotationPermission:(BOOL)isConfLevel;

/// [en]This class is about getting the conference state: force open camera conf show state. [cn]获取会议状态:强制视频会议显示状态
- (HWMOnlyOpenCameraShowState)getOnlyOpenCameraShowState;

@end


@interface HWMSDKPrivateDeviceMgrService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addPrivateConfDeviceNotifyCallback:(id<HWMSDKPrivateConfDeviceNotify>)callback;
- (void)removePrivateConfDeviceNotifyCallback:(id<HWMSDKPrivateConfDeviceNotify>)callback;
- (void)addPrivateE2EENotifyCallback:(id<HWMSDKPrivateE2EENotify>)callback;
- (void)removePrivateE2EENotifyCallback:(id<HWMSDKPrivateE2EENotify>)callback;
/// [en]This api is about video control. [cn]视频控制(这个接口有点难理解，需讨论优化成易理解使用的接口)
- (HWMSDKERR)videoControl:(HWMSDKVideoControlParamModel *)videoControl;

/// [en]This api is about opening or closing the automatic routing of audio. [cn]开启或关闭音频底层自动路由
- (HWMSDKERR)switchAudioAutoRouter:(BOOL)isOpen;

/// [en]This api is about operating audio preview window. [cn]操作音频预览窗口 :disable
- (HWMSDKERR)operateAudioPreview:(BOOL)isOpen;

/// [en]This api is about setting the folding state of device interface. [cn]设置设备界面的折叠状态
- (HWMSDKERR)setDeviceFoldedStateWithType:(HWMDeviceFoldedStateType)type;

/// [en]This api is about setting video resolution mode. [cn]设置视频分辨率模式
- (HWMSDKERR)setVideoResolutionMode:(HWMVideoResolutionMode)videoResolutionMode;

/// [en]This api is about setting AI model param. [cn]设置AI模型参数
- (HWMSDKERR)setAiModelParam:(HWMSDKAiModelParamModel *)param;

/// [en]This api is about opening or closing the encryption of audio stream chip. [cn]开启或关闭音频流芯片加密
- (HWMSDKERR)switchAudioChipEncrypt:(BOOL)isOpen;

/// [en]This api is about setting the virtual background. [cn]设置虚拟背景
- (HWMSDKERR)setVirtualBackgroundWithVirtualBackgroundInfo:(HWMSDKVirtualBackgroundInfoModel *)virtualBackgroundInfo;

/// [en]This api is about setting the virtual background memory. [cn]设置虚拟背景位图内存
- (HWMSDKERR)setVirtualBackgroundMemoryWithMode:(HWMVirtualBackgroundMode)mode imageBuffer:(NSData *)imageBuffer width:(NSUInteger)width height:(NSUInteger)height;

/// [en]This api is about getting AI algorithms capability. [cn]获取AI算法能力
- (HWMSDKAICapabilityModel *)getAICapability;

/// [en]This api is about whether the super resolution is supported. [cn]手机是否提供视频超级分辨率功能
- (BOOL)getIsEnableSuperResolution;

/// [en]This api is used to setting video window. [cn]设置视频窗口
- (HWMSDKERR)setVideoWindowWithWndCount:(NSUInteger)wndCount videoWndInfo:(HWMSDKVideoWndBasicInfoModel *)videoWndInfo;

/// [en]This api is used to setting attributes of video display window. [cn]设置视频显示窗口属性----废弃掉 :disable
- (HWMSDKERR)setVideoRenderWithVideoRenderInfo:(HWMSDKVideoRenderInfoModel *)videoRenderInfo;

/// [en]This api is used to setting attributes of video display window. [cn]设置视频显示--远端窗口属性(render字段, 此版本不生效)
- (HWMSDKERR)setRemoteVideoRenderWithVideoRenderInfo:(HWMSDKRemoteVideoRenderInfoModel *)videoRenderInfo;

/// [en]This api is used to setting attributes of video display window. [cn]设置窗口渲染模式
- (HWMSDKERR)setVideoDisplayModeWithDisplayModeInfo:(HWMSDKVideoRenderDisplayModeInfoModel *)displayModeInfo;

/// [en]This api is used to setting extended attributes of video display window. [cn]设置视频显示窗口扩展属性 :disable
- (HWMSDKERR)setVideoRenderExWithVideoRenderInfo:(HWMSDKVideoRenderInfoModel *)videoRenderInfo;

/// [en]This api is about setting terminal type [cn]设置终端类型
- (HWMSDKERR)setTerminalType:(NSString *)type;

/// [en]This api is about setting user setting info [cn]用户设置相关信息 :disable
- (HWMSDKERR)setUserSettingInfoWithParam:(HWMSDKUserSettingInfoModel *)param;

/// [en]This api is about media open audio preview [cn]开始音频预览 :disable
- (NSUInteger)openAudioPreview;

/// [en]This api is about media stop audio preview [cn]停止音频预览 :disable
- (HWMSDKERR)stopAudioPreviewWithSessionId:(NSUInteger)sessionId;

/// [en]This api is about media get device volume [cn]获取设备音量 :disable
- (NSUInteger)getDeviceVolumeWithType:(HWMDeviceType)type;

/// [en]This api is about media set device volume [cn]设置设备音量 :disable
- (HWMSDKERR)setDeviceVolumeWithType:(HWMDeviceType)type volume:(NSUInteger)volume;

/// [en]This api is about media set mic auto volume [cn]设置是否自动调节麦克风音量 :disable
- (HWMSDKERR)setMicAutoVolume:(BOOL)isOpen;

/// [en]This api is about set high resolution [cn]设置1080P :disable
- (HWMSDKERR)setHighResolution:(BOOL)enableHighResolution;

/// [en]This api is about set high resolution priority [cn]设置高清优先 :disable
- (HWMSDKERR)setHighResolutionPriority:(BOOL)enableHighResolutionPriority;

/// [en]This api is about set high resolution svc [cn]开启高清多流模式 :disable
- (HWMSDKERR)enableHighResolutionSvcMode:(BOOL)enableHighResolutionSvcMode;

/// [en]This api is about enable conf high resolution [cn]开启会议级1080P :disable
- (HWMSDKERR)enableConfHighResolution:(BOOL)enable;

/// [en]This api is about set up audio tnr [cn]设置瞬时噪音抑制开关
- (HWMSDKERR)setUpAudioTnr:(BOOL)enable;

/// [en]This api is about set up audio tnr level [cn]设置瞬时噪音抑制挡位 :disable
- (HWMSDKERR)setUpAudioTnrLevel:(HWMUpAudioTnrLevel)level;

/// [en]This api is about set up active origin sound [cn]设置启用原始声音 :disable
- (HWMSDKERR)setActiveOriginSound:(BOOL)enable;

/// [en]This api is about set cpu level [cn]设置cpu等级
- (void)setCpuLevel:(HWMCpuLevel)level;

/// [en]This api is about set cpu usage [cn]设置cpu使用率 :disable
- (void)setCpuUsageWithValue:(NSUInteger)value;

/// [en]This api is about set cpu threshold [cn]设置cpu阈值 :disable
- (void)setCpuThresholdWithAbove:(NSUInteger)above belowSlow:(NSUInteger)belowSlow belowQuick:(NSUInteger)belowQuick;

/// [en]This api is about set hme virtual background path. [cn]配置hme 虚拟背景模型路径
- (HWMSDKERR)setVirtualBackGroundModelPathWithPaths:(HWMSDKVirtualBackgroundModelPathsModel *)paths;

/// [en]This api is about enable e2ee. [cn]启用/关闭端到端加密。
- (HWMSDKERR)enableE2EE:(BOOL)enable;

/// [en]This api is about setting video quality mode. [cn]设置视频最小分辨率
- (HWMSDKERR)setVideoQualityMode:(HWMVideoQualityMode)videoQualityMode;

/// [en]get video preview state [cn]获取主流视频的预览状态 :disable
- (BOOL)getVideoPreviewState;

@end



NS_ASSUME_NONNULL_END

