import 'dart:typed_data'; import '../models/models.dart'; class PlayerApiClient { final Uri baseUrl; final String bearerToken; const PlayerApiClient({required this.baseUrl, required this.bearerToken}); Future bootstrap({required String username, required String password}) => throw UnimplementedError(); Future login({required String username, required String password}) => throw UnimplementedError(); Future logout() => throw UnimplementedError(); Future healthz() => throw UnimplementedError(); Future readyz() => throw UnimplementedError(); Future getSharedMediaPage(String token) => throw UnimplementedError(); Future streamSharedMedia(String token, {String? range}) => throw UnimplementedError(); Future getSharedThumbnail(String token) => throw UnimplementedError(); Future downloadSharedMedia(String token) => throw UnimplementedError(); Future> getConfig() => throw UnimplementedError(); Future> listSets() => throw UnimplementedError(); Future> browseSet(int setId, {String? parent}) => throw UnimplementedError(); Future getSetCover(int setId, {String? folder}) => throw UnimplementedError(); Future updateSetCover(int setId, {String? folder}) => throw UnimplementedError(); Future uploadToSet(int setId, {required String fileName, required List bytes}) => throw UnimplementedError(); Future> listMedia({String? search, int? setId, List? setIds, String? type, bool? favorites, List? tags, double? minDuration, double? maxDuration, int? fileSizeMin, int? fileSizeMax, String? sort, int? limit, int? offset, String? folder, String? parent}) => throw UnimplementedError(); Future getMedia(int mediaId) => throw UnimplementedError(); Future streamMedia(int mediaId, {String? range}) => throw UnimplementedError(); Future downloadMedia(int mediaId) => throw UnimplementedError(); Future getThumbnail(int mediaId) => throw UnimplementedError(); Future regenerateThumbnail(int mediaId) => throw UnimplementedError(); Future toggleFavorite(int mediaId) => throw UnimplementedError(); Future> listTags() => throw UnimplementedError(); Future addTag(int mediaId, String tag) => throw UnimplementedError(); Future removeTag(int mediaId, String tag) => throw UnimplementedError(); Future createShare(int mediaId, {DateTime? expiresAt, int? maxUses}) => throw UnimplementedError(); Future> listSharesForMedia(int mediaId) => throw UnimplementedError(); Future> listMyShares() => throw UnimplementedError(); Future revokeShare(String token) => throw UnimplementedError(); Future getNote(int mediaId) => throw UnimplementedError(); Future upsertNote(int mediaId, String content) => throw UnimplementedError(); Future deleteNote(int mediaId) => throw UnimplementedError(); Future updateProgress({required int mediaId, required double positionSeconds}) => throw UnimplementedError(); Future updateProgressStatus({required int mediaId, required String status}) => throw UnimplementedError(); Future> listInProgress() => throw UnimplementedError(); Future deleteMedia(int mediaId) => throw UnimplementedError(); Future restoreMedia(int mediaId) => throw UnimplementedError(); Future> listPodcasts() => throw UnimplementedError(); Future> listEpisodes(int podcastSetId, {int? limit, int? offset}) => throw UnimplementedError(); Future downloadEpisode(int episodeId) => throw UnimplementedError(); Future toggleEpisodeComplete(int episodeId) => throw UnimplementedError(); Future subscribePodcast({required String feedUrl, String? setName}) => throw UnimplementedError(); Future> listUsers() => throw UnimplementedError(); Future createUser({required String username, required String password, required bool isAdmin}) => throw UnimplementedError(); Future deleteUser(int userId) => throw UnimplementedError(); Future>> listPermissions() => throw UnimplementedError(); Future grantPermission({required int setId, required int userId, required String role}) => throw UnimplementedError(); Future revokePermission({required int setId, required int userId}) => throw UnimplementedError(); Future triggerRescan() => throw UnimplementedError(); Future> getScanProgress() => throw UnimplementedError(); Future> listTrash() => throw UnimplementedError(); }