import 'dart:io'; import 'dart:typed_data'; /// Interface for media services (Immich, Blossom, etc.) abstract class MediaServiceInterface { /// Uploads an image file. /// Returns a map with 'id' (or 'hash') and 'url' keys. Future> uploadImage(File imageFile); /// Uploads a video file (MP4). /// Returns a map with 'id' (or 'hash') and 'url' keys. Future> uploadVideo(File videoFile); /// Fetches image bytes for an asset/blob. Future fetchImageBytes(String assetId, {bool isThumbnail = true}); /// Gets the full image URL for an asset/blob. String getImageUrl(String assetId); /// Gets the base URL. String get baseUrl; /// Clears the cache for a specific image URL or asset ID. /// This is useful when images are removed from recipes to free up cache space. Future clearImageCache(String imageUrlOrAssetId); }