//
//  RCWSOrder.h
//  Demo
//
//  Created by 余衡武 on 2024/10/5.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface RCWSOrder : NSString

#pragma mark - 批量指令URLs数组
/// @"%@?ip=%@&Authorization=%@"
+ (NSMutableArray *)getUrlsFrom:(NSArray *)hosts ips:(NSArray *)ips tokens:(NSArray *)tokens;
+ (NSString *)getUrlFrom:(NSString *)host ip:(NSString *)ip token:(NSString *)token;
+ (NSString *)getPreUrlFrom:(NSString *)host ip:(NSString *)ip;

#pragma mark - 心跳包指令
+ (NSString *)heartBeatOrder;

#pragma mark - 批量操作指令
/// 1、同步操作-设置分辨率指令
+ (NSString *)resolutionOrder:(NSString *)width height:(NSString *)height;
/// 2、同步操作-设置DPI指令
+ (NSString *)dpiOrder:(NSString *)dpi;
/// 3、全局root控制指令 root：0禁用, 1启用
+ (NSString *)rootSystemOrder:(int)root;
/// 4、 剪贴板指令
+ (NSString *)clipboardOrder:(NSString *)text;
/// 5、虚拟定位指令
+ (NSString *)virtualLocationOrder:(NSString *)longitude latitude:(NSString *)latitude;
/// 6、真机键盘开关指令 (mode: 1-开启 2-关闭)
+ (NSString *)setKeyoardModeOrder:(int)mode;
/// 7、真机键盘输入指令 (position: -1-删除 0-输入)
+ (NSString *)setKeyoardInfoOrder:(NSString *)data position:(int)position;

#pragma mark - 应用管理指令
/// 1、启动指定的应用指令
+ (NSString *)startApp:(NSString *)packageName;
/// 2、停止指定的应用指令
+ (NSString *)stopApp:(NSString *)packageName;
/// 3、卸载指定的应用指令
+ (NSString *)uninstallApp:(NSString *)packageName;
/// 4、隐藏预置的应用指令
+ (NSString *)hideApps:(NSArray *)packageNames;
/// 5、显示预置的应用指令
+ (NSString *)showApps:(NSArray *)packageNames;
/// 6、应用root权限控制指令 root：0禁用, 1启用
+ (NSString *)rootApps:(NSArray *)packageNames root:(int)root;
/// 7、启用指定的应用指令
+ (NSString *)enableApp:(NSString *)packageName;
/// 8、停用指定的应用指令
+ (NSString *)disableApp:(NSString *)packageName;
/// 9、清理指定的应用指令
+ (NSString *)clearApp:(NSString *)packageName;
/// 10、设备新机（ brand-品牌 model-型号）
+ (NSString *)renewBrand:(NSString *)brand model:(NSString *)model;
/// 11、开启推流应用预览  opt：0禁用, 1启用
+ (NSString *)previewApp:(NSArray *)packageNames opt:(int)opt;
/// 12、查询隐藏应用列表
+ (NSString *)queryAppHideList;
/// 13、查询所有应用列表
+ (NSString *)queryAppAllList;

#pragma mark - 预览图指令
/// 1、开启预览图推流指令
+ (NSString *)startPreview:(NSString *)width height:(NSString *)height interval:(NSString *)interval quality:(NSString *)quality;
/// 2、停止预览图推流指令
+ (NSString *)stopPreview;

#pragma mark - 音视频Websocket指令
/// 订阅主题：屏幕亮度
+ (NSString *)subscribeBrightness;

/// 取消订阅主题：屏幕亮度
+ (NSString *)unsubscribeBrightness;

/// 订阅主题：剪贴板透传
+ (NSString *)subscribeClipboard;

/// 取消订阅主题：剪贴板透传
+ (NSString *)unsubscribeClipboard;

/// 订阅主题：屏幕方向
+ (NSString *)subscribeScreenOrientation;

/// 取消订阅主题：屏幕方向
+ (NSString *)unsubscribeScreenOrientation;

/// 订阅主题：分辨率变化
+ (NSString *)subscribeResolution;

/// 取消订阅主题：分辨率变化
+ (NSString *)unsubscribeResolution;

/// 订阅主题：创建快捷方式
+ (NSString *)subscribeAppShortcut;

/// 取消订阅主题：创建快捷方式
+ (NSString *)unsubscribeAppShortcut;

/// 订阅主题：应用启动
+ (NSString *)subscribeAppStart;

/// 取消订阅主题：应用启动
+ (NSString *)unsubscribeAppStart;

/// 订阅主题：GPS 变化
+ (NSString *)subscribeGPSVariation;

/// 取消订阅主题：GPS 变化
+ (NSString *)unsubscribeGPSVariation;

/// 订阅主题：音量变化
+ (NSString *)subscribeVolume;

/// 取消订阅主题：音量变化
+ (NSString *)unsubscribeVolume;

/// 音量设置
+ (NSString *)setVolumeWithStreamType:(uint)streamType percentage:(uint)percentage;

/// 订阅主题：消息透传
+ (NSString *)subscribeAppMessage;

/// 取消订阅主题：消息透传
+ (NSString *)unsubscribeAppMessage;

/// 消息透传 - 发送消息
+ (NSString *)appMsgTransmission:(NSString *)packageName message:(NSString *)message;

/// 截图（quality ： 1～100 ）
+ (NSString *)screenShot:(int)quality;

/// 查询推流画质
+ (NSString *)queryStreamQuality;

/// 查询分辨率
+ (NSString *)querySysResolution;

/// 查询横竖屏状态
+ (NSString *)queryScreenOriention;

/// 吹一吹 取值范围 5-10秒
+ (NSString *)blowMargin:(int)time;

/// 摇一摇 取值范围 3-10秒
+ (NSString *)shakeMargin:(int)time;

/// 隐藏导航栏
+ (NSString *)hideNavBar;

/// 显示导航栏
+ (NSString *)showNavBar;

/// 查询导航栏状态
+ (NSString *)queryNavBar;

/// 查询全局 root 状态
+ (NSString *)queryRootStatus;

#pragma mark - 键盘透传指令
/// 1、设置真机输入法  2、设置云手机输入法
+ (NSString *)setInputMethod:(int)mode;

/// 2、设置真机输入内容
/// content--输入的字符，可为空""
/// position--输入的位置 传入-1 并且KeyBoardData 为空时 会删除光标前的字符，位置>-1的时候为正常输入模式
+ (NSString *)setKeyoardInfo:(NSString *)content position:(int)position;

#pragma mark - 辅助方法
+ (NSString *)getTypeFromOrder:(NSString *)order;

@end

NS_ASSUME_NONNULL_END
