using System;
using System.Collections.Generic;
using Jellyfin.Database.Implementations.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);
///
/// Updates or Creates the display preferences.
///
/// The entity to update or create.
void UpdateDisplayPreferences(DisplayPreferences displayPreferences);
///
/// Updates or Creates the display preferences for the given item.
///
/// The entity to update or create.
void UpdateItemDisplayPreferences(ItemDisplayPreferences itemDisplayPreferences);
}
}