using System;
using System.Collections.Generic;
using Jellyfin.Data.Entities;
namespace MediaBrowser.Controller
{
///
/// Manages the storage and retrieval of display preferences.
///
public interface IDisplayPreferencesManager
{
///
/// Gets the display preferences for the user and client.
///
///
/// This will create the display preferences if it does not exist, but it will not save automatically.
///
/// The user's id.
/// The item id.
/// The client string.
/// The associated display preferences.
DisplayPreferences GetDisplayPreferences(Guid userId, Guid itemId, string client);
///
/// Gets the default item display preferences for the user and client.
///
///
/// This will create the item display preferences if it does not exist, but it will not save automatically.
///
/// The user id.
/// The item id.
/// The client string.
/// The item display preferences.
ItemDisplayPreferences GetItemDisplayPreferences(Guid userId, Guid itemId, string client);
///
/// Gets all of the item display preferences for the user and client.
///
/// The user id.
/// The client string.
/// A list of item display preferences.
IList ListItemDisplayPreferences(Guid userId, string client);
///
/// Gets all of the custom item display preferences for the user and client.
///
/// The user id.
/// The item id.
/// The client string.
/// The dictionary of custom item display preferences.
Dictionary ListCustomItemDisplayPreferences(Guid userId, Guid itemId, string client);
///
/// Sets the custom item display preference for the user and client.
///
/// The user id.
/// The item id.
/// The client id.
/// A dictionary of custom item display preferences.
void SetCustomItemDisplayPreferences(Guid userId, Guid itemId, string client, Dictionary customPreferences);
///
/// Saves changes made to the database.
///
void SaveChanges();
}
}