using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Sync;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Sync
{
    public interface ISyncRepository
    {
        /// 
        /// Gets the job.
        /// 
        /// The identifier.
        /// SyncJob.
        SyncJob GetJob(string id);
        /// 
        /// Creates the specified job.
        /// 
        /// The job.
        /// Task.
        Task Create(SyncJob job);
        /// 
        /// Updates the specified job.
        /// 
        /// The job.
        /// Task.
        Task Update(SyncJob job);
        /// 
        /// Deletes the job.
        /// 
        /// The identifier.
        /// Task.
        Task DeleteJob(string id);
        /// 
        /// Gets the jobs.
        /// 
        /// The query.
        /// QueryResult<SyncJob>.
        QueryResult GetJobs(SyncJobQuery query);
        /// 
        /// Gets the job item.
        /// 
        /// The identifier.
        /// SyncJobItem.
        SyncJobItem GetJobItem(string id);
        /// 
        /// Creates the specified job item.
        /// 
        /// The job item.
        /// Task.
        Task Create(SyncJobItem jobItem);
        /// 
        /// Updates the specified job item.
        /// 
        /// The job item.
        /// Task.
        Task Update(SyncJobItem jobItem);
        /// 
        /// Gets the job items.
        /// 
        /// The query.
        /// IEnumerable<SyncJobItem>.
        QueryResult GetJobItems(SyncJobItemQuery query);
        /// 
        /// Gets the library item ids.
        /// 
        /// The query.
        /// QueryResult<System.String>.
        QueryResult GetLibraryItemIds(SyncJobItemQuery query);
    }
}