using System;
using Jellyfin.Data.Entities;
using Jellyfin.Data.Events;
using MediaBrowser.Model.Devices;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Session;
namespace MediaBrowser.Controller.Devices
{
public interface IDeviceManager
{
///
/// Saves the capabilities.
///
/// The reported identifier.
/// The capabilities.
/// Task.
void SaveCapabilities(string reportedId, ClientCapabilities capabilities);
///
/// Gets the capabilities.
///
/// The reported identifier.
/// ClientCapabilities.
ClientCapabilities GetCapabilities(string reportedId);
///
/// Gets the device information.
///
/// The identifier.
/// DeviceInfo.
DeviceInfo GetDevice(string id);
///
/// Gets the devices.
///
/// The query.
/// IEnumerable<DeviceInfo>.
QueryResult GetDevices(DeviceQuery query);
///
/// Determines whether this instance [can access device] the specified user identifier.
///
bool CanAccessDevice(User user, string deviceId);
void UpdateDeviceOptions(string deviceId, DeviceOptions options);
DeviceOptions GetDeviceOptions(string deviceId);
event EventHandler>> DeviceOptionsUpdated;
}
}