using RemoteAccessPlatform.Windows.Models; namespace RemoteAccessPlatform.Windows.Contracts; public interface ISessionGatewayClient { Task ConnectAsync( string attachToken, DataPlaneOfferDto? dataPlane, Func onEnvelope, Func onClosed, CancellationToken cancellationToken); } public interface ISessionGatewayConnection : IAsyncDisposable { bool IsConnected { get; } string TransportKind { get; } Task SendInputAsync(SessionInputEventDto inputEvent, CancellationToken cancellationToken); Task SendClipboardTextAsync(string text, string origin, string contentHash, long sequenceId, CancellationToken cancellationToken); Task SendFileUploadStartAsync(FileUploadStartDto upload, CancellationToken cancellationToken); Task SendFileUploadChunkAsync(FileUploadChunkDto chunk, CancellationToken cancellationToken); Task SendFileUploadCancelAsync(string transferId, CancellationToken cancellationToken); Task SendFileDownloadStartAsync(FileDownloadStartDto download, CancellationToken cancellationToken); Task SendFileDownloadAckAsync(FileDownloadAckDto ack, CancellationToken cancellationToken); Task SendFileDownloadCancelAsync(string transferId, CancellationToken cancellationToken); }