using Ardalis.Result; namespace Musify.Application.Contracts.Infrastructure { public interface IStorageHandler { Task> GetFileAsync(string bucketName, string keyName, CancellationToken cancellationToken); Task GetUrlAsync(string bucketName, string keyName, TimeSpan ExpirationTime, CancellationToken cancellationToken); Task> UploadFileAsync(string filePath, string bucketName, string keyName, CancellationToken cancellationToken); Task> UploadFileAsync(Stream sourceStream, string contentType, string bucketName, string keyName, CancellationToken cancellationToken); Task TransferFilesAsync(string sourceDirectory, string bucketName, string route, CancellationToken cancellationToken); Task RemoveFileAsync(string bucketName, string keyName, CancellationToken cancellationToken); Task CopyFileAsync(string sourceBucketName, string sourceKeyName, string destinationBucketName, string destinationKeyName, CancellationToken cancellationToken); } }