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; }
}
}