//
//  RTCXThingManager.h
//  RTCXThingCapability
//
//  Created by Apple on 2024/8/30.
//

#import <Foundation/Foundation.h>
#import <RTCXThingCapability/RTCXThing.h>
NS_ASSUME_NONNULL_BEGIN

#define kRTCXThingManager [RTCXThingManager sharedManager]

@interface RTCXThingManager : NSObject
/**
 返回单例

 @return 单例
 */
+ (instancetype)sharedManager;


/**
 创建 Thing 对象，该对象会被加入管理者维护的物的队列中

 @param iotId 物的唯一标识符， 该 id 是物在注册绑定时由云端颁发
 @return 返回 Thing 对象
- (RTCXThing *)buildThing:(NSString *)iotId  DEPRECATED_API;
*/

/**
 销毁 Thing 对象，在 Thing 不再需要时调用此方法
可以将其从 管理者维护的物的队列中删除
 @param thing Thing 的对象
 */
- (void)destroyThing:(RTCXThing *)thing;



/**
 创建 Thing 对象，该对象会被加入管理者维护的物的队列中
 
 @param productKey 物在iot平台注册的产品型号
 @param deviceName 物的deviceName
 @param iotId 物的iotId
 @return 返回 Thing 对象
 */
- (RTCXThing*)buildThing:(NSString *)productKey
             deviceName:(NSString *)deviceName
                  iotId:(NSString *)iotId;

/**
 创建 Thing 对象，该对象会被加入管理者维护的物的队列中
 专属版的设备，在创建与获取物对象时必须使用该方法，建议使用该方法代替 - (RTCXThing*)buildThing:deviceName:iotId: 方法
 
 @param productKey 物在iot平台注册的产品型号
 @param deviceName 物的deviceName
 @param iotId 物的iotId
 @param deviceType  设备类型 0：普通设备；1：专属版设备；2：AP设备；默认0
 @return 返回 Thing 对象
 */
- (RTCXThing*)buildThing:(NSString *)productKey
             deviceName:(NSString *)deviceName
                  iotId:(NSString *)iotId
            deviceType:(NSInteger)deviceType;
@end

NS_ASSUME_NONNULL_END
