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(); TProviderDefinition Get(int id); TProviderDefinition Create(TProviderDefinition definition); void Update(TProviderDefinition definition); void Delete(int id); 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); } }