using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Controller.Providers
{
    /// 
    /// Interface IRemoteMetadataProvider.
    /// 
    public interface IRemoteMetadataProvider : IMetadataProvider
    {
    }
    /// 
    /// Interface IRemoteMetadataProvider.
    /// 
    /// The type of .
    /// The type of .
    public interface IRemoteMetadataProvider : IMetadataProvider, IRemoteMetadataProvider, IRemoteSearchProvider
        where TItemType : BaseItem, IHasLookupInfo
        where TLookupInfoType : ItemLookupInfo, new()
    {
        /// 
        /// Gets the metadata for a specific LookupInfoType.
        /// 
        /// The LookupInfoType to get metadata for.
        /// The .
        /// A task returning a MetadataResult for the specific LookupInfoType.
        Task> GetMetadata(TLookupInfoType info, CancellationToken cancellationToken);
    }
    /// 
    /// Interface IRemoteMetadataProvider.
    /// 
    /// The type of .
    public interface IRemoteSearchProvider : IRemoteSearchProvider
        where TLookupInfoType : ItemLookupInfo
    {
        /// 
        /// Gets the list of  for a specific LookupInfoType.
        /// 
        /// The LookupInfoType to search for.
        /// The .
        /// A task returning RemoteSearchResults for the searchInfo.
        Task> GetSearchResults(TLookupInfoType searchInfo, CancellationToken cancellationToken);
    }
}