import 'package:shelfsdk/audiobookshelf_api.dart'; import 'package:vaani/features/player/core/audiobook_player.dart'; abstract class AbsAudioPlayer { AbsAudioPlayer._(); BookExpanded? _book; BookExpanded? get book => _book; Future play(); Future pause(); Future playOrPause(); Future next(); Future previous(); Future seek(Duration position, {int? index}); Future seekInBook(Duration position); Future setSpeed(double speed); Future setVolume(double volume); Future switchChapter(int chapterId); int get currentIndex; Duration get position; Duration get positionInChapter { final globalPosition = positionInBook; return globalPosition - (book?.findChapterAtTime(globalPosition).start ?? Duration.zero); } Duration get positionInBook => position + (book?.tracks[currentIndex].startOffset ?? Duration.zero); Stream get positionStream; Stream get positionInChapterStream; Stream get positionInBookStream; Stream get bufferedPositionInBookStream; }