using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; namespace PettingZoo.Tapeti.NuGet { // TODO support logger public interface INuGetPackageManager { public IReadOnlyList Sources { get; } } public interface INuGetPackageSource { public string Name { get; } public Task> Search(string searchTerm, bool includePrerelease, CancellationToken cancellationToken); } public interface INuGetPackage { public string Title { get; } public string Description { get; } public string Authors { get; } public string Version { get; } public Task> GetVersions(CancellationToken cancellationToken); } public interface INuGetPackageVersion : IComparable { public string Version { get; } // TODO support fetching dependencies public Task Download(Stream destination, CancellationToken cancellationToken); } }