#nullable enable
namespace Terminal.Gui;
///
/// Describes an ongoing ANSI request sent to the console.
/// Use to handle the response
/// when console answers the request.
///
public class AnsiEscapeSequenceRequest
{
///
/// Request to send e.g. see
///
/// EscSeqUtils.CSI_SendDeviceAttributes.Request
///
///
public required string Request { get; init; }
///
/// Invoked when the console responds with an ANSI response code that matches the
///
///
public Action ResponseReceived;
///
///
/// The terminator that uniquely identifies the type of response as responded
/// by the console. e.g. for
///
/// EscSeqUtils.CSI_SendDeviceAttributes.Request
///
/// the terminator is
///
/// EscSeqUtils.CSI_SendDeviceAttributes.Terminator
///
/// .
///
///
/// After sending a request, the first response with matching terminator will be matched
/// to the oldest outstanding request.
///
///
public required string Terminator { get; init; }
///
/// Sends the to the raw output stream of the current .
/// Only call this method from the main UI thread. You should use if
/// sending many requests.
///
public void Send ()
{
Application.Driver?.RawWrite (Request);
}
}