using TakeoutSaaS.Application.Storage.Contracts;

namespace TakeoutSaaS.Application.Storage.Abstractions;

/// <summary>
/// 文件存储应用服务抽象。
/// </summary>
public interface IFileStorageService
{
    /// <summary>
    /// 通过服务端中转上传文件。
    /// </summary>
    Task<FileUploadResponse> UploadAsync(UploadFileRequest request, CancellationToken cancellationToken = default);

    /// <summary>
    /// 生成前端直传凭证（预签名上传）。
    /// </summary>
    Task<DirectUploadResponse> CreateDirectUploadAsync(DirectUploadRequest request, CancellationToken cancellationToken = default);
}
