using System;
namespace Artemis.UI.Shared.Services.MainWindow;
///
/// A service that can be used to manage the state of the main window.
///
public interface IMainWindowService : IArtemisSharedUIService
{
///
/// Gets a boolean indicating whether the main window is currently open
///
bool IsMainWindowOpen { get; }
///
/// Gets a boolean indicating whether the main window is currently focused
///
bool IsMainWindowFocused { get; }
///
/// Sets up the main window provider that controls the state of the main window
///
/// The main window provider to use to control the state of the main window
void ConfigureMainWindowProvider(IMainWindowProvider mainWindowProvider);
///
/// Opens the main window if it is not already open, must be called on the UI thread
///
void OpenMainWindow();
///
/// Closes the main window if it is not already closed, must be called on the UI thread
///
void CloseMainWindow();
///
/// Occurs when the main window has been opened
///
public event EventHandler? MainWindowOpened;
///
/// Occurs when the main window has been closed
///
public event EventHandler? MainWindowClosed;
///
/// Occurs when the main window has been focused
///
public event EventHandler? MainWindowFocused;
///
/// Occurs when the main window has been unfocused
///
public event EventHandler? MainWindowUnfocused;
}