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

#import <Foundation/Foundation.h>
#import <RTCXDeviceCenter/RTCXSceneMgrReq.h>
NS_ASSUME_NONNULL_BEGIN

typedef void (^RTCXSceneMgrOnSuccess)(id _Nullable data, id _Nullable rawData);
typedef void (^RTCXSceneMgrOnError)(NSError * _Nullable error);

@protocol RTCXSceneMgrProtocol <NSObject>
/**
 *  创建场景
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneCreatWithReq:(nonnull RTCXSceneCreatReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
/**
 *  删除场景
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneDeleteWithReq:(nonnull RTCXSceneDeleteReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
/**
 *  重命名场景
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneRenameWithReq:(nonnull RTCXSceneRenameReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
/**
 *  更新场景
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneUpdateWithReq:(nonnull RTCXSceneUpdateReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
/**
 *   执行场景
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneExecuteWithReq:(nonnull RTCXSceneExecuteReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
/**
 *   获取场景列表
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneListWithReq:(nonnull RTCXSceneListReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
/**
 *  获取场景详情
 *
 *  @param req        请求参数对象
 *  @param onSuccess  成功回调
 *  @param onError   失败回调
 */
- (void)sceneDetailWithReq:(nonnull RTCXSceneDetailReq *)req onSuccess:(nullable RTCXSceneMgrOnSuccess)onSuccess onError:(nullable RTCXSceneMgrOnError)onError;
@end

NS_ASSUME_NONNULL_END
