using FileAccessAgent.Application.Models;

namespace FileAccessAgent.Application.Abstractions;

public interface IFileStorage
{
    Task<FileObjectResult> UploadAsync(Guid tenantId, string objectKey, Stream content, long? contentLength, string? contentType, CancellationToken cancellationToken);
    Task<FileObjectResult?> GetMetadataAsync(Guid tenantId, string objectKey, CancellationToken cancellationToken);
    Task<FileDownloadResult?> OpenReadAsync(Guid tenantId, string objectKey, CancellationToken cancellationToken);
    Task<bool> DeleteAsync(Guid tenantId, string objectKey, CancellationToken cancellationToken);
}
