using InteractiveReadLine.Formatting;
namespace InteractiveReadLine.Abstractions
{
///
/// Defines a provider for a buffer backed, console-like interface. Intended to create a seam between
/// the actual System.Console instance and the higher level behaviors, it can also be used to wrap
/// any character buffer interface with a moving cursor.
///
public interface IConsole
{
///
/// Gets or sets the cursor's position from the left edge of the buffer
///
int CursorLeft { get; set; }
///
/// Gets or sets the cursor's position from the top of the buffer
///
int CursorTop { get; set; }
///
/// Gets the height of the provider's buffer, measured in rows
///
int BufferHeight { get; }
///
/// Gets the width of the provider's buffer, measured in columns
///
int BufferWidth { get; }
void Write(FormattedText text);
void WriteLine(FormattedText text);
void Write(FormattedChar c);
ConsoleKeyInfo ReadKey();
}
}