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