using Windows.UI.Xaml.Controls;
using ModernKeePass.ViewModels;

namespace ModernKeePass.Interfaces
{
    public interface IPwEntity
    {
        GroupVm ParentGroup { get; }
        GroupVm PreviousGroup { get; }
        Symbol IconSymbol { get; }
        string Id { get; }
        string Name { get; set; }
        string Path { get; }
        bool IsEditMode { get; }
        bool IsRecycleOnDelete { get; }

        /// <summary>
        /// Move a entity to the destination group
        /// </summary>
        /// <param name="destination">The destination to move the entity to</param>
        void Move(GroupVm destination);
        /// <summary>
        /// Delete from Model
        /// </summary>
        void CommitDelete();
        /// <summary>
        /// Restore ViewModel
        /// </summary>
        void UndoDelete();
        /// <summary>
        /// Save changes to Model
        /// </summary>
        void Save();
        /// <summary>
        /// Delete from ViewModel
        /// </summary>
        void MarkForDelete();
    }
}