//
//  RTCXSceneMgrReq.h
//  RTCXDeviceCenter
//
//  Created by Apple on 2025/10/11.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface RTCXSceneMgrReq : NSObject

@end

@interface RTCXSceneConditionReq : NSObject
// condition/device/event：事件条件匹配；condition/device/property：属性条件匹配； 必选
@property (nonatomic, copy) NSString *uri;
// 设备型号 如：xLeWcoelZbyOePbJludl 必选
@property (nonatomic, copy) NSString *productKey;
// 设备序列号SN 如：TEST20240820002 必选
@property (nonatomic, copy) NSString *deviceName;
// 物模型定义属性的标识符 必选
@property (nonatomic, copy) NSString *identifier;
// 设备事件中定义取值的path 可选
@property (nonatomic, copy) NSString *propertyName;
// 比较类型，如>、<、>=、==、<=、!=、in等。详见compareType支持类型 必选
@property (nonatomic, copy) NSString *compareType;
// 比较的值，string  |integer  |boolean  |array  |object  |number  |null 必选
@property (nonatomic, strong) id compareValue;
@end

@interface RTCXSceneActionReq : NSObject
// /action/device/setProperty：设置设备属性；/action/device/invokeService：调用设备服务； 必选
@property (nonatomic, copy) NSString *uri;
// 设备型号 如：xLeWcoelZbyOePbJludl 必选
@property (nonatomic, copy) NSString *productKey;
// 设备序列号SN 如：TEST20240820002 必选
@property (nonatomic, copy) NSString *deviceName;
// 物模型定义属性或服务的标识符 可选
@property (nonatomic, copy) NSString *identifier;
// 属性设置的内容或者服务入参json 如: {"value":"1"} 可选
@property (nonatomic, copy) NSString *args;
@end

@interface RTCXSceneCreatReq : NSObject
// 是否在创建时启用场景。YES: 表示启用；NO: 表示停用。 必选
@property (nonatomic, assign) BOOL enable;
// 用户给场景起的名称 必选
@property (nonatomic, copy) NSString *name;
// any：表示任何一个条件满足就执行动作；all：表示所有条件满足时才执行动作；默认any 可选
@property (nonatomic, copy) NSString *mode;
// 场景的触发条件集合，例如设备属性、设备事件等。目前一个场景仅支持一个触发条件。必选
@property (nonatomic, strong) NSArray<RTCXSceneConditionReq *> *conditions;
// 表示场景被触发时所需执行的动作集合，例如设置设备属性、调用设备服务。一个场景中可以有多个动作，场景中必须至少有一个动作，必选
@property (nonatomic, strong) NSArray<RTCXSceneActionReq *> *actions;
@end

@interface RTCXSceneDeleteReq : NSObject
// 场景id 必选
@property (nonatomic, strong) NSNumber *sceneId;
@end

@interface RTCXSceneRenameReq : NSObject
// 场景id 必选
@property (nonatomic, strong) NSNumber *sceneId;
// 是否在创建时启用场景。YES: 表示启用；NO: 表示停用。 必选
@property (nonatomic, assign) BOOL enable;
// 用户给场景起的名称 必选
@property (nonatomic, copy) NSString *name;
@end

@interface RTCXSceneUpdateReq : NSObject
// 场景id 必选
@property (nonatomic, strong) NSNumber *sceneId;
// 是否在创建时启用场景。YES: 表示启用；NO: 表示停用。 必选
@property (nonatomic, assign) BOOL enable;
// 用户给场景起的名称 必选
@property (nonatomic, copy) NSString *name;
// any：表示任何一个条件满足就执行动作；all：表示所有条件满足时才执行动作；默认any 可选
@property (nonatomic, copy) NSString *mode;
// 场景的触发条件集合，例如设备属性、设备事件等。目前一个场景仅支持一个触发条件。必选
@property (nonatomic, strong) NSArray<RTCXSceneConditionReq *> *conditions;
// 表示场景被触发时所需执行的动作集合，例如设置设备属性、调用设备服务。一个场景中可以有多个动作，场景中必须至少有一个动作，必选
@property (nonatomic, strong) NSArray<RTCXSceneActionReq *> *actions;
@end

@interface RTCXSceneExecuteReq : NSObject
// 场景id 必选
@property (nonatomic, strong) NSNumber *sceneId;
@end

@interface RTCXSceneListReq : NSObject
// 页码，从1开始 必选
@property (nonatomic, strong) NSNumber *pageNo;
// 分页大小，最大50 必选
@property (nonatomic, strong) NSNumber *pageSize;
@end

@interface RTCXSceneDetailReq : NSObject
// 场景id 必选
@property (nonatomic, strong) NSNumber *sceneId;
@end
NS_ASSUME_NONNULL_END
