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

#import <Foundation/Foundation.h>
#import "HWMUISDKCommonDefine.h"
#import "HWMUISDKAllModelIndex.h"

#import "HWMUISDKPrivateMeetingService.h"

NS_ASSUME_NONNULL_BEGIN

typedef void(^HWMSDKSetVirtualBackgroundDefaultImagesHandler) (NSError * _Nullable error);

typedef void(^HWMSDKSetAvatarHandler) (NSError * _Nullable error);

typedef void(^HWMSDKSetAvatarStyleHandler) (NSError * _Nullable error);


@protocol HWMUISDKConfigNotify <NSObject>

@optional
/// [en] Notify of AVDevice control state [cn] 音视频设备控制状态变化通知
- (void)onAVDeviceCtrlStateChanged:(HWMUISDKDeviceStateInfoModel *)info;
/// [en] Notify of audio famme [cn] 上报音频码流帧数据通知
- (void)onAudioFrameNotify:(HWMUISDKAudioFrameDataModel *)audioFrameData;

@end

@interface HWMUISDKConfigService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addConfigNotifyCallback:(id<HWMUISDKConfigNotify>)callback;
- (void)removeConfigNotifyCallback:(id<HWMUISDKConfigNotify>)callback;
/// [en] This interface is used to enable capability [cn] 功能配置开关
- (HWMUISDKSDKERR)enableCapabilityWithInfo:(HWMUISDKCapabilityInfoModel *)info;

/// [en] This interface is used to set language. [cn] 设置语言
- (void)setLanguageWithInfo:(HWMUISDKLanguageInfoModel *)info;

/// [en] This interface is used to set file save path. [cn] 设置用户保存路径
- (void)setUserSavePathWithInfo:(HWMUISDKUserSavePathInfoModel *)info;

/// [en] This interface is used to set audio raw data output config. [cn] 设置开启或关闭音频码流
- (void)setAudioRawDataOutputConfigWithInfo:(HWMUISDKAudioRawDataConfigInfoModel *)info;

/// [en] This interface is used to set call incoming answer type. [cn] 设置来电应答方式
- (void)setAnswerTypeWithInfo:(HWMUISDKInComingAnswerTypeInfoModel *)info;

/// [en] This interface is used to set device config for conf incoming. [cn] 会议来电时设备开关配置
- (void)setDeviceConfigForConfIncomingWithDeviceConfig:(HWMUISDKDeviceConfigModel *)deviceConfig;

/// [en] This interface is used to get conf pstn access number. [cn] 获取会议pstn接入号码
- (HWMUISDKPstnAccessNumberInfoModel *)getConfPstnAccessNumber;

/// [en] This interface is used to AVDeviceCtrl. [cn] 音视频设备控制功能
- (HWMUISDKDeviceCtrlInfoModel *)aVDeviceCtrlWithInfo:(HWMUISDKDeviceStateInfoModel *)info;

/// [en] This interface is used to disable voice prompts. [cn] 禁用提示音
- (void)disableVoicePromptsWithInfo:(HWMUISDKVoicePromptsInfoModel *)info;

/// [en] This interface is used to set share permission. [cn] 设置共享权限
- (void)setShareScreenPermission:(HWMUISDKSharePermissionModel *)permission;

/// [en] This interface is used to set log save path. [cn] 设置日志保存路径
- (void)setLogPathWithInfo:(HWMUISDKLogPathInfoModel *)info;

/// [en] This interface is used to get error message. [cn] 获取错误提示
- (HWMUISDKErrorMessageInfoModel *)getErrorMessageWithErrorCode:(NSInteger)errorCode;

/// [en] This interface is used to set need transparent windows in share [cn] 设置屏幕共享中需透明的窗口
- (void)setTransparentWndWithInfo:(HWMUISDKTransparentWndInfoModel *)info;

/// [en] This interface is used to customize the text of the specified scene [cn] 自定义指定场景文案
- (void)setCustomUITextWithCustomSceneTextInfoList:(HWMUISDKCustomSceneTextInfoListModel *)customSceneTextInfoList;

/// [en]set virtual background default images [cn]设置虚拟背景默认图片
- (void)setVirtualBackgroundDefaultImagesWithInfo:(HWMUISDKVirtualBackgroundInfoModel *)info callback:(HWMSDKSetVirtualBackgroundDefaultImagesHandler)callback;

@end


@protocol HWMUISDKUIConfigNotify <NSObject>

@optional
/// [en] Notify of inject btn. [cn] 注入点击通知
- (void)onClickInjectBtnNotify:(HWMUISDKInjectBtnInfoModel *)injectBtnInfo;
/// [en] Notify of inject participant item btn. [cn] 与会者列表子项注入点击通知
- (void)onClickInjectParticipantItemBtnNotify:(HWMUISDKInjectParticipantItemBtnInfoModel *)injectBtnInfo;
/// [en] Notify of inject Call all btn. [cn] 全部呼叫注入点击通知
- (void)onClickInjectCallAllBtnNotify:(HWMUISDKCallAllBtnInfoModel *)injectBtnInfo;
/// [en] window handle list notify. when window handle changed, will receive this notify [cn] 窗口句柄通知
- (void)onRenderWindowInfoListChanged:(HWMUISDKHwndListInfoModel *)hwndInfo;
/// [en] Notify of query external contact avatar [cn] 查询外部通讯录头像通知
- (void)onQueryContactAvatarNotify:(HWMUISDKContactInfoModel *)contactInfo;
/// [en] Notify of double click participant list item [cn] 双击与会者项通知
- (void)onDoubleClickParticipantListItemNotify:(HWMUISDKParticipantItemInfoModel *)participantInfo;

@end

@interface HWMUISDKUIConfigService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addUIConfigNotifyCallback:(id<HWMUISDKUIConfigNotify>)callback;
- (void)removeUIConfigNotifyCallback:(id<HWMUISDKUIConfigNotify>)callback;
/// [en] This interface is used to config sdk. [cn] 界面配置
- (void)configWithUiConfig:(NSString *)uiConfig;

/// [en] This interface is used to set watermark inject information. [cn] 自定义会中水印
- (void)setWaterMarkWithInfo:(HWMUISDKWaterMarkInfoModel *)info;

/// [en] This method is used to get window handle list. [cn] 获取窗口句柄列表
- (HWMUISDKHwndListInfoModel *)getRenderWindowInfoList;

/// [en] This interface is used to ShowMeetingWindow. [cn] 显示会议窗口
- (void)showMeetingWindow;

/// [en] This interface is used to set avatar. [cn] 设置头像
- (void)setAvatarWithInfo:(HWMUISDKAvatarInfoModel *)info callback:(HWMSDKSetAvatarHandler)callback;

/// [en] This interface is used to set meeting window icon info. [cn] 自定义会议窗口任务栏图标
- (void)setMeetingWindowIconWithInfo:(HWMUISDKWindowIconInfoModel *)info;

/// [en] This interface is used to show setting window. [cn] 显示设置窗口接口
- (void)showSettingWindowWithInfo:(HWMUISDKShowSettingWindowInfoModel *)info;

/// [en] This interface is used to show toast info. [cn] 显示提示信息
- (void)showToastWithInfo:(HWMUISDKToastInfoModel *)info;

/// [en] This interface is used to get main window info. [cn] 获取主窗口信息
- (HWMUISDKMainWindowInfoModel *)getMainWindowInfo;

/// [en] This interface is used to set avatar style. [cn] 设置头像风格
- (void)setAvatarStyle:(HWMUISDKAvatarStyleModel *)avatarStyle callback:(HWMSDKSetAvatarStyleHandler)callback;

@end



NS_ASSUME_NONNULL_END

