using System;
using System.Threading.Tasks;
using ClaudeDo.Ui.ViewModels;
using ClaudeDo.Ui.ViewModels.Conflicts;
using ClaudeDo.Ui.ViewModels.Islands;
using ClaudeDo.Ui.ViewModels.Modals;
namespace ClaudeDo.Ui.Services;
///
/// Single seam for opening modal dialogs. Replaces the per-modal Show*Modal
/// Func callbacks that were previously wired separately on the shell and the lists
/// island (and the Confirm/Error dialogs duplicated in both code-behinds). The view
/// layer supplies the implementation ();
/// callers build + initialize the VM and hand it here to be shown.
///
public interface IDialogService
{
Task ShowAboutAsync(AboutModalViewModel vm);
Task ShowWeeklyReportAsync(WeeklyReportModalViewModel vm);
Task ShowSettingsAsync(SettingsModalViewModel vm);
Task ShowListSettingsAsync(ListSettingsModalViewModel vm);
Task ShowRepoImportAsync(RepoImportModalViewModel vm);
Task ShowWorktreesOverviewAsync(WorktreesOverviewModalViewModel vm);
Task ShowWorkerConnectionAsync(WorkerConnectionModalViewModel vm);
Task ShowConflictResolverAsync(ConflictResolverViewModel vm);
Task ShowLogVisualizerAsync(LogVisualizerViewModel vm);
/// Modal yes/no confirmation. Returns true only when confirmed.
Task ConfirmAsync(string message);
/// Modal error notice with a single dismiss button.
Task ShowErrorAsync(string message);
/// Show (or re-show + focus) the modeless Mission Control window. Lazily created; hides on close.
void ShowMissionControl(MissionControlViewModel vm);
/// Show a detached monitor in its own window; re-docks it when that window closes.
void ShowDetachedMonitor(TaskMonitorViewModel monitor, Action onClosed);
}