/**
 * Copyright (c) 2026 Tencent. All rights reserved.
 * Module:   TXVoiceAILog @ TXLiteAVSDK
 */

#import <Foundation/Foundation.h>
#import <stdint.h>

#ifndef LITEAVSDK_EXPORT
#define LITEAVSDK_EXPORT __attribute__((visibility("default")))
#endif

NS_ASSUME_NONNULL_BEGIN

/// 日志级别。
typedef NS_ENUM(NSInteger, TXVoiceAILogLevel) {
  TXVoiceAILogLevelVerbose = 0,  ///< 输出所有级别的 Log
  TXVoiceAILogLevelDebug = 1,    ///< 输出 DEBUG，INFO，WARNING，ERROR 和 FATAL 级别的 Log
  TXVoiceAILogLevelInfo = 2,     ///< 输出 INFO，WARNING，ERROR 和 FATAL 级别的 Log
  TXVoiceAILogLevelWarn = 3,     ///< 输出 WARNING，ERROR 和 FATAL 级别的 Log
  TXVoiceAILogLevelError = 4,    ///< 输出 ERROR 和 FATAL 级别的 Log
  TXVoiceAILogLevelFatal = 5,    ///< 仅输出 FATAL 级别的 Log
  TXVoiceAILogLevelNone = 6,     ///< 不输出任何 SDK Log
};

/// 日志回调接口。
LITEAVSDK_EXPORT
@protocol TXVoiceAILogCallback <NSObject>
@optional
/// 本地 LOG 的打印回调。
/// 如果您希望捕获 SDK 的本地日志打印行为，可以通过 setLogCallback: 设置回调，
/// 让 SDK 将要打印的日志都通过本回调接口抛送给您。
/// @param log 日志内容。
/// @param level 日志等级，参见 TXVoiceAILogLevel。
/// @return 无返回值
- (void)onLog:(NSString *)log level:(TXVoiceAILogLevel)level;
@end

/// VoiceAI 日志配置接口（类方法）。
LITEAVSDK_EXPORT
@interface TXVoiceAILog : NSObject

/// 设置 Log 输出级别。默认值：TXVoiceAILogLevelNone。
/// @param level 参见 TXVoiceAILogLevel。
+ (void)setLogLevel:(TXVoiceAILogLevel)level;

/// 设置日志存储路径。请务必在所有其他接口之前调用，并且保证目录存在且可写。
/// @param path 存储日志的路径。
+ (void)setLogPath:(NSString *)path;

/// 设置日志回调（传 nil 可取消回调）。
/// @param callback 日志回调接口。
+ (void)setLogCallback:(nullable id<TXVoiceAILogCallback>)callback;

@end

NS_ASSUME_NONNULL_END
