using System.Collections.Concurrent;

namespace Beam.Fluent;

public interface IDownloadStage<OutType> {
    IDownloadStage<OutType> SaveToDirectory(string dir);
    IDownloadStage<OutType> SaveToFiles(IEnumerable<string> files);
    IDownloadStage<OutType> SaveToMemory(ConcurrentBag<OutType> bag);
    void WaitForDownload();
    Task WaitForDownloadAsync();
    DownloadEnumerable<OutType> AsAsyncEnumerable();
}