using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Playlists;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Playlists
{
    public interface IPlaylistManager
    {
        /// 
        /// Gets the playlists.
        /// 
        /// The user identifier.
        /// IEnumerable<Playlist>.
        IEnumerable GetPlaylists(string userId);
        /// 
        /// Creates the playlist.
        /// 
        /// The options.
        /// Task<Playlist>.
        Task CreatePlaylist(PlaylistCreationRequest options);
        /// 
        /// Adds to playlist.
        /// 
        /// The playlist identifier.
        /// The item ids.
        /// The user identifier.
        /// Task.
        Task AddToPlaylist(string playlistId, IEnumerable itemIds, string userId);
        /// 
        /// Removes from playlist.
        /// 
        /// The playlist identifier.
        /// The entry ids.
        /// Task.
        Task RemoveFromPlaylist(string playlistId, IEnumerable entryIds);
        /// 
        /// Gets the playlists folder.
        /// 
        /// The user identifier.
        /// Folder.
        Folder GetPlaylistsFolder(string userId);
        /// 
        /// Moves the item.
        /// 
        /// The playlist identifier.
        /// The entry identifier.
        /// The new index.
        /// Task.
        Task MoveItem(string playlistId, string entryId, int newIndex);
    }
}