using CommunityToolkit.Mvvm.Input;
using MultiTerm.Protocols.Types;
namespace MultiTerm.Protocols;
public interface IProtocolSettingsViewModel
{
///
/// Indicates the protocol type of the implementing SettingsViewModel.
///
ProtocolType ProtocolType { get; }
///
/// Indicates if the displays ifself as if the protocol is connected.
///
bool DisplaysConnected { get; }
///
/// Indicates wether the settings can currently be edited.
///
bool AreEditable { get; }
///
/// Event that is thrown when the user requested to connect to the device with the entered settings.
/// Provides protocol settings to use for connection.
///
event EventHandler ConnectRequested;
///
/// Event that is thrown when the user requested to disconnect from the device.
///
event EventHandler? DisconnectRequested;
///
/// Change the state from connected to disconnected or from disconnected to connected.
/// Does not throw or .
///
///
/// if true changes the state from disconnected to connected.
/// if false changes the state from connected to disconnected.
///
void ForceConnectedState(bool connected);
}