#nullable enable
namespace Terminal.Gui.App;
/// Interface to create a platform specific driver.
internal interface IMainLoopDriver
{
/// Must report whether there are any events pending, or even block waiting for events.
/// , if there were pending events, otherwise.
bool EventsPending ();
/// The iteration function.
void Iteration ();
/// Initializes the , gets the calling main loop for the initialization.
/// Call to release resources.
/// Main loop.
void Setup (MainLoop mainLoop);
/// Tears down the driver. Releases resources created in .
void TearDown ();
/// Wakes up the that might be waiting on input, must be thread safe.
void Wakeup ();
}