using System;
using System.Collections.Generic;
namespace RGB.NET.Core
{
///
/// Represents a generic device provider.
///
public interface IRGBDeviceProvider : IDisposable
{
#region Properties & Fields
///
/// Indicates if the used SDK is initialized and ready to use.
///
bool IsInitialized { get; }
///
/// Gets a list of loaded by this .
///
IEnumerable Devices { get; }
///
/// Gets whether the application has exclusive access to devices or not.
///
bool HasExclusiveAccess { get; }
#endregion
#region Methods
///
/// Initializes the if not already happened or reloads it if it is already initialized.
///
/// Specifies which types of devices to load.
/// Specifies whether the application should request exclusive access of possible or not.
/// Specifies whether exception during the initialization sequence should be thrown or not.
///
bool Initialize(RGBDeviceType loadFilter = RGBDeviceType.All, bool exclusiveAccessIfPossible = false, bool throwExceptions = false);
///
/// Resets all handled back top default.
///
void ResetDevices();
#endregion
}
}