import 'package:immich_mobile/entities/album.entity.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/entities/user.entity.dart';

abstract interface class IAlbumRepository {
  Future<int> count({bool? local});
  Future<Album> create(Album album);
  Future<Album?> getById(int id);
  Future<Album?> getByName(
    String name, {
    bool? shared,
    bool? remote,
  });
  Future<Album> update(Album album);
  Future<void> delete(int albumId);
  Future<List<Album>> getAll({bool? shared});
  Future<void> removeUsers(Album album, List<User> users);
  Future<void> addAssets(Album album, List<Asset> assets);
  Future<void> removeAssets(Album album, List<Asset> assets);
  Future<Album> recalculateMetadata(Album album);
}