using System;
using System.IO;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Devices;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Session;
namespace MediaBrowser.Controller.Devices
{
public interface IDeviceManager
{
///
/// Occurs when [camera image uploaded].
///
event EventHandler> CameraImageUploaded;
///
/// 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);
///
/// Gets the upload history.
///
/// The device identifier.
/// ContentUploadHistory.
ContentUploadHistory GetCameraUploadHistory(string deviceId);
///
/// Accepts the upload.
///
/// The device identifier.
/// The stream.
/// The file.
/// Task.
Task AcceptCameraUpload(string deviceId, Stream stream, LocalFileInfo file);
///
/// 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;
}
}