using MediaBrowser.Model.Sync;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Sync
{
    public interface ISyncDataProvider
    {
        /// 
        /// Gets the local items.
        /// 
        /// The target.
        /// The server identifier.
        /// Task<List<LocalItem>>.
        Task> GetLocalItems(SyncTarget target, string serverId);
        /// 
        /// Adds the or update.
        /// 
        /// The target.
        /// The item.
        /// Task.
        Task AddOrUpdate(SyncTarget target, LocalItem item);
        /// 
        /// Deletes the specified identifier.
        /// 
        /// The target.
        /// The identifier.
        /// Task.
        Task Delete(SyncTarget target, string id);
        /// 
        /// Gets the specified identifier.
        /// 
        /// The target.
        /// The identifier.
        /// Task<LocalItem>.
        Task Get(SyncTarget target, string id);
        /// 
        /// Gets the cached item.
        /// 
        /// The target.
        /// The server identifier.
        /// The item identifier.
        /// Task<LocalItem>.
        Task> GetItems(SyncTarget target, string serverId, string itemId);
        /// 
        /// Gets the cached items by synchronize job item identifier.
        /// 
        /// The target.
        /// The server identifier.
        /// The synchronize job item identifier.
        /// Task<List<LocalItem>>.
        Task> GetItemsBySyncJobItemId(SyncTarget target, string serverId, string syncJobItemId);
    }
}