using System.Collections.Generic; using FluentValidation.Results; namespace NzbDrone.Core.ThingiProvider { public interface IProviderFactory where TProviderDefinition : ProviderDefinition, new() where TProvider : IProvider { List All(); List GetAvailableProviders(); bool Exists(int id); TProviderDefinition Find(int id); TProviderDefinition Get(int id); IEnumerable Get(IEnumerable ids); TProviderDefinition Create(TProviderDefinition definition); void Update(TProviderDefinition definition); IEnumerable Update(IEnumerable definitions); void Delete(int id); void Delete(IEnumerable ids); IEnumerable GetDefaultDefinitions(); IEnumerable GetPresetDefinitions(TProviderDefinition providerDefinition); void SetProviderCharacteristics(TProviderDefinition definition); void SetProviderCharacteristics(TProvider provider, TProviderDefinition definition); TProvider GetInstance(TProviderDefinition definition); ValidationResult Test(TProviderDefinition definition); object RequestAction(TProviderDefinition definition, string action, IDictionary query); List AllForTag(int tagId); } }