namespace StellaOps.Scanner.Storage.ObjectStore;

public interface IArtifactObjectStore
{
    Task PutAsync(ArtifactObjectDescriptor descriptor, Stream content, CancellationToken cancellationToken);

    Task<Stream?> GetAsync(ArtifactObjectDescriptor descriptor, CancellationToken cancellationToken);

    Task DeleteAsync(ArtifactObjectDescriptor descriptor, CancellationToken cancellationToken);
}

public sealed record ArtifactObjectDescriptor(string Bucket, string Key, bool Immutable, TimeSpan? RetainFor = null);
