using System.Collections.Generic;
using System.Threading.Tasks;
using isn.Abstract;
using isnd.Controllers;
using isnd.Data;
using isnd.Data.Catalog;
using isnd.Services;
using isnd.ViewModels;
using NuGet.Versioning;
using Unleash;

namespace isnd.Interfaces
{
    public interface IPackageManager
    {
        AutoCompleteResult AutoComplete(string pkgid, int skip, int take, bool prerelease = false, string packageType = null);
       
        CatalogIndex GetCatalogIndex();
        string[] GetVersions(string pkgid, NuGetVersion parsedVersion, bool prerelease = false, string packageType = null, int skip = 0, int take = 25);
        PackageIndexViewModel SearchByName(string query, int skip, int take, bool prerelease = false, string packageType = null);
        IEnumerable<Resource> GetResources(IUnleash unleashĈlient);
        void ÛpdateCatalogFor(Commit commit);
        Task<PackageDeletionReport> DeletePackageAsync(string pkgid, string version, string type);
        Task<PackageVersion> GetPackageAsync(string pkgid, string version, string type);
    }

}