namespace Nonemm.Digital; /// The line connection to a bridge process. What is behind it is Wine in /// production and a fake in the tests. public interface BridgeChannel : IDisposable { /// A line the bridge wrote. Raised on the reader thread. event EventHandler? LineReceived; /// The bridge stopped on its own. The text says what is known about why. event EventHandler? Failed; Task StartAsync(CancellationToken cancellation = default); Task SendAsync(string line, CancellationToken cancellation = default); /// The path as the engine sees it. Wine has its own drive letters, and the /// engine is started by name from a Windows command line. Task ToWindowsPathAsync(string path, CancellationToken cancellation = default); }