import 'package:im_app/domain/entities/sound.dart';

/// 音效仓储接口
abstract class SoundRepository {
  // ── 监听 ─────────────────────────────────────────────────────────────────

  Stream<List<Sound>> watchAll();

  Stream<Sound?> watchById(int id);

  Stream<List<Sound>> watchByType(int typ);

  // ── 读取 ─────────────────────────────────────────────────────────────────

  Future<List<Sound>> getAll();

  Future<Sound?> getById(int id);

  Future<List<Sound>> getByType(int typ);

  Future<List<Sound>> getByChannelGroup(int channelGroupId);

  Future<List<Sound>> getDefaults();

  // ── 写入 ─────────────────────────────────────────────────────────────────

  Future<void> insertOrReplace(Sound sound);

  Future<void> insertOrReplaceAll(List<Sound> sounds);

  Future<void> update(Sound sound);

  // ── 删除 ─────────────────────────────────────────────────────────────────

  Future<void> delete(int id);

  Future<void> clear();
}
