using System;
namespace Ryujinx.Input
{
///
/// Represent an emulated gamepad driver used to provide input in the emulator.
///
public interface IGamepadDriver : IDisposable
{
///
/// The name of the driver
///
string DriverName { get; }
///
/// The unique ids of the gamepads connected.
///
ReadOnlySpan GamepadsIds { get; }
///
/// Event triggered when a gamepad is connected.
///
event Action OnGamepadConnected;
///
/// Event triggered when a gamepad is disconnected.
///
event Action OnGamepadDisconnected;
///
/// Open a gampad by its unique id.
///
/// The unique id of the gamepad
/// An instance of associated to the gamepad id given or null if not found
IGamepad GetGamepad(string id);
///
/// Flush the internal state of the driver.
///
/// Does nothing by default.
void Clear() { }
}
}