using VoidCat.Model;
namespace VoidCat.Services.Abstractions;
///
/// File binary data store
///
public interface IFileStore
{
///
/// Return key for named instance
///
string? Key { get; }
///
/// Ingress a file into the system (Upload)
///
///
///
///
ValueTask Ingress(IngressPayload payload, CancellationToken cts);
///
/// Egress a file from the system (Download)
///
///
///
///
///
ValueTask Egress(EgressRequest request, Stream outStream, CancellationToken cts);
///
/// Pre-Egress checks
///
///
///
ValueTask StartEgress(EgressRequest request);
///
/// Deletes file data only, metadata must be deleted with
///
///
///
ValueTask DeleteFile(Guid id);
///
/// Open a filestream for a file on the system
///
///
///
///
ValueTask Open(EgressRequest request, CancellationToken cts);
}