#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Playlists;
namespace MediaBrowser.Controller.Playlists
{
public interface IPlaylistManager
{
///
/// Gets the playlist.
///
/// The user identifier.
/// The playlist identifier.
/// Playlist.
Playlist GetPlaylist(Guid userId, Guid playlistId);
///
/// Gets the playlists.
///
/// The user identifier.
/// IEnumerable<Playlist>.
IEnumerable GetPlaylists(Guid userId);
///
/// Toggle OpenAccess policy of the playlist.
///
/// The playlist identifier.
/// The user identifier.
/// Task.
Task ToggleOpenAccess(Guid playlistId, Guid userId);
///
/// Adds a share to the playlist.
///
/// The playlist identifier.
/// The user identifier.
/// The share.
/// Task.
Task AddToShares(Guid playlistId, Guid userId, UserPermissions share);
///
/// Rremoves a share from the playlist.
///
/// The playlist identifier.
/// The user identifier.
/// The share.
/// Task.
Task RemoveFromShares(Guid playlistId, Guid userId, UserPermissions share);
///
/// 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 AddToPlaylistAsync(Guid playlistId, IReadOnlyCollection itemIds, Guid userId);
///
/// Removes from playlist.
///
/// The playlist identifier.
/// The entry ids.
/// Task.
Task RemoveFromPlaylistAsync(string playlistId, IEnumerable entryIds);
///
/// Gets the playlists folder.
///
/// Folder.
Folder GetPlaylistsFolder();
///
/// Gets the playlists folder for a user.
///
/// The user identifier.
/// Folder.
Folder GetPlaylistsFolder(Guid userId);
///
/// Moves the item.
///
/// The playlist identifier.
/// The entry identifier.
/// The new index.
/// Task.
Task MoveItemAsync(string playlistId, string entryId, int newIndex);
///
/// Removed all playlists of a user.
/// If the playlist is shared, ownership is transferred.
///
/// The user id.
/// Task.
Task RemovePlaylistsAsync(Guid userId);
///
/// Saves a playlist.
///
/// The playlist.
void SavePlaylistFile(Playlist item);
}
}