using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MaterialDesignThemes.Wpf;
using Ninject.Parameters;
namespace Artemis.UI.Shared.Services
{
///
/// Provides different ways of showing confirmation dialogs and custom dialogs
///
public interface IDialogService : IArtemisSharedUIService
{
///
/// Shows a confirm dialog on the main dialog host
///
/// The title of the dialog
/// The body text of the dialog
/// The text of the confirm button, defaults to "Confirm"
/// The text of the cancel button, defaults to "Cancel"
/// A task that resolves to true if confirmed and false if cancelled
Task ShowConfirmDialog(string header, string text, string confirmText = "Confirm", string cancelText = "Cancel");
///
/// Shows a confirm dialog on the dialog host provided in identifier.
///
///
/// The identifier of the to use eg.
/// <materialDesign:DialogHost Identifier="MyDialogHost">
///
/// The title of the dialog
/// The body text of the dialog
/// The text of the confirm button, defaults to "Confirm"
/// The text of the cancel button, defaults to "Cancel"
/// A task that resolves to true if confirmed and false if cancelled
Task ShowConfirmDialogAt(string identifier, string header, string text, string confirmText = "Confirm", string cancelText = "Cancel");
///
/// Shows a dialog by initializing a view model implementing
///
/// The type of the view model
/// A task resolving to the result of the dialog's
Task