package expo.modules.medialibrary.next.objects.asset.delegates import android.net.Uri import android.os.Bundle import expo.modules.medialibrary.next.objects.wrappers.RelativePath import expo.modules.medialibrary.next.objects.album.Album import expo.modules.medialibrary.next.objects.asset.Asset import expo.modules.medialibrary.next.objects.wrappers.MediaType import expo.modules.medialibrary.next.objects.wrappers.MimeType import expo.modules.medialibrary.next.records.AssetInfo import expo.modules.medialibrary.next.records.Location import expo.modules.medialibrary.next.records.Shape interface AssetDelegate { val contentUri: Uri suspend fun getCreationTime(): Long? suspend fun getDuration(): Long? suspend fun getFilename(): String suspend fun getHeight(): Int suspend fun getWidth(): Int suspend fun getShape(): Shape? suspend fun getMediaType(): MediaType suspend fun getModificationTime(): Long? suspend fun getUri(): Uri suspend fun getInfo(): AssetInfo suspend fun getMimeType(): MimeType suspend fun getAlbums(): List suspend fun getLocation(): Location? suspend fun getExif(): Bundle suspend fun getFavorite(): Boolean suspend fun setFavorite(isFavorite: Boolean) suspend fun delete() suspend fun move(relativePath: RelativePath) suspend fun copy(relativePath: RelativePath): Asset }