//
//  AliyunNuiTTSBridge.h
//  suixinkan
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/// 阿里云 NUI TTS 事件代理，将 Objective-C SDK 回调转成稳定的 Swift 边界。
@protocol AliyunNuiTTSBridgeDelegate;

/// 阿里云 NUI TTS Objective-C 桥接器，隔离 SDK 头文件和模拟器不可用逻辑。
@interface AliyunNuiTTSBridge : NSObject

/// SDK 回调代理。
@property (nonatomic, weak, nullable) id<AliyunNuiTTSBridgeDelegate> delegate;

/// 当前平台是否可直接加载 NUI TTS SDK。
@property (nonatomic, readonly) BOOL sdkAvailable;

/// 初始化 NUI TTS 引擎。
- (NSInteger)initializeWithTicket:(NSString *)ticket logLevel:(NSInteger)logLevel saveLog:(BOOL)saveLog;

/// 设置合成参数。
- (NSInteger)setParam:(NSString *)param value:(NSString *)value;

/// 开始合成指定文本。
- (NSInteger)playWithPriority:(NSString *)priority taskId:(NSString *)taskId text:(NSString *)text;

/// 取消指定任务，taskId 为空时取消全部任务。
- (NSInteger)cancelWithTaskId:(nullable NSString *)taskId;

/// 释放 SDK 资源。
- (NSInteger)releaseEngine;

/// 获取 SDK 参数值。
- (nullable NSString *)paramValueForKey:(NSString *)key;

@end

/// 阿里云 NUI TTS 事件代理。
@protocol AliyunNuiTTSBridgeDelegate <NSObject>

/// 收到 TTS 状态事件。
- (void)aliyunNuiTTSBridge:(AliyunNuiTTSBridge *)bridge
           didReceiveEvent:(NSInteger)event
                    taskId:(nullable NSString *)taskId
                      code:(NSInteger)code;

/// 收到 TTS 音频数据。
- (void)aliyunNuiTTSBridge:(AliyunNuiTTSBridge *)bridge
       didReceiveAudioData:(NSData *)data
                    taskId:(nullable NSString *)taskId
                      info:(nullable NSString *)info;

@end

NS_ASSUME_NONNULL_END
