#import <Foundation/Foundation.h>
#import <TTSDKFramework/TVLManager.h>
NS_ASSUME_NONNULL_BEGIN

/**
 * 多观察者管理器 - 用于同时支持多个 VeLivePlayerObserver
 * 解决不同组件同时需要接收回调的问题
 */
@interface VeLivePlayerMultiObserver : NSObject <VeLivePlayerObserver>

/**
 * 获取单例实例
 */
+ (instancetype)sharedInstance;

/**
 * 获取单例实例，等同于 sharedInstance
 */
+ (instancetype)getInstance;

/**
 * 设置播放器的观察者为此 MultiObserver
 * @param player 播放器实例
 */
- (void)setupPlayer:(TVLManager *)player;

/**
 * 添加一个观察者到代理列表
 * @param observerId 观察者ID，相同ID会覆盖之前的观察者
 * @param observer 观察者对象
 */
- (void)addObserver:(NSString *)observerId
           observer:(id<VeLivePlayerObserver>)observer;

/**
 * 从代理列表中移除观察者
 * @param observerId 观察者ID
 */
- (void)removeObserver:(NSString *)observerId;

/**
 * 获取当前所有注册的观察者
 * @return 观察者数组
 */
- (NSArray *)getObservers;

/**
 * 清除所有观察者
 */
- (void)clearObservers;

@end

NS_ASSUME_NONNULL_END
