using System; using System.Threading; using System.Threading.Tasks; namespace KVMote.Transport { internal interface IKvmTransport : IDisposable { /// Scans for the device and stores connection info internally. Task DetectAsync(CancellationToken ct); /// Human-readable device label, e.g. "COM5" or "KVMote (BLE)". string DeviceLabel { get; } /// Connect using info gathered by DetectAsync. Task ConnectAsync(); void Disconnect(); bool IsConnected { get; } /// Reliable send — keyboard, clicks, LED commands. void Send(byte[] data); /// Lossy send — drops if transport is busy. For mouse move. void SendLossy(byte[] data); event Action DataReceived; /// Maximum characters allowed in a single clipboard paste. int ClipboardMaxChars { get; } /// Delay in milliseconds between characters during clipboard paste. int ClipboardDelayMs { get; } } }