import 'package:fis_common/event/event_type.dart';

import 'capturer.dart';

/// 音视频推流通道
abstract class IPublishChannel implements IChannel {
  /// 预览状态
  bool get isPreviewing;

  /// 预览状态变更事件
  late final FEventHandler<bool> previewStateChanged;
}

/// 音视频播放通道
abstract class IPlayChannel implements IChannel {
  /// 是否在播放
  bool get isPlaying;

  /// 播放状态变更事件
  late final FEventHandler<bool> playStateChanged;

  /// 视频禁用状态变更事件
  late final FEventHandler<bool> videoMuteChanged;

  /// 音频禁用状态变更事件
  late final FEventHandler<bool> audioMuteChanged;

  /// 播放
  Future<void> play();

  /// 停止播放
  Future<void> stop();
}

/// 音视频通道
abstract class IChannel {
  /// 唯一编号
  String get id;

  /// 是否关闭画面
  bool get isMuteVideo;

  /// 是否静音
  bool get isMuteAudio;

  /// 是否就绪
  bool get isReady;

  /// 音量大小
  int get volume;

  /// 设置视频 启用/禁用
  void setVideoMute(bool isMute);

  /// 设置音频 启用/禁用
  void setAudioMute(bool isMute);

  /// 设置音量
  void setVolume(int volume);

  /// 创建采集器
  ICapturer createCapture();

  /// 就绪状态变更事件
  late final FEventHandler<bool> readyStateChanged;
}
