using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Sync;
using MediaBrowser.Model.Users;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Sync
{
public interface ISyncManager
{
///
/// Creates the job.
///
/// The request.
/// Task.
Task CreateJob(SyncJobRequest request);
///
/// Gets the jobs.
///
/// QueryResult<SyncJob>.
Task> GetJobs(SyncJobQuery query);
///
/// Gets the job items.
///
/// The query.
/// QueryResult<SyncJobItem>.
QueryResult GetJobItems(SyncJobItemQuery query);
///
/// Gets the job.
///
/// The identifier.
/// SyncJob.
SyncJob GetJob(string id);
///
/// Updates the job.
///
/// The job.
/// Task.
Task UpdateJob(SyncJob job);
///
/// Cancels the job.
///
/// The identifier.
/// Task.
Task CancelJob(string id);
///
/// Adds the parts.
///
void AddParts(IEnumerable providers);
///
/// Gets the synchronize targets.
///
IEnumerable GetSyncTargets(string userId);
///
/// Supportses the synchronize.
///
/// The item.
/// true if XXXX, false otherwise.
bool SupportsSync(BaseItem item);
///
/// Gets the device profile.
///
/// The target identifier.
/// DeviceProfile.
DeviceProfile GetDeviceProfile(string targetId);
///
/// Reports the synchronize job item transferred.
///
/// The identifier.
/// Task.
Task ReportSyncJobItemTransferred(string id);
///
/// Gets the job item.
///
/// The identifier.
/// SyncJobItem.
SyncJobItem GetJobItem(string id);
///
/// Reports the offline action.
///
/// The action.
/// Task.
Task ReportOfflineAction(UserAction action);
///
/// Gets the ready synchronize items.
///
/// The target identifier.
/// List<SyncedItem>.
List GetReadySyncItems(string targetId);
///
/// Synchronizes the data.
///
/// The request.
/// Task<SyncDataResponse>.
Task SyncData(SyncDataRequest request);
}
}