Code/k/Interfaces/IViewManager.cs
using System.Collections.Generic;
using Sandbox.k.Models;
using Sandbox.k.Views;

namespace Sandbox.k.Interfaces {
    // todo refactor
    public interface IViewManager {
        public void Register(string viewName, ViewBase view);
        public void Register(IEnumerable<ViewBase> views);
        public void Unregister(string viewName);
        public void CloseAllViews();

        public void SetActiveView(
            string viewName,
            bool isActive,
            ViewModelBase model = null,
            IViewAnimation animation = null);
        // move ViewModelBase and IViewAnimation into separate controller

        public T SetActiveView<T>(
            string viewName,
            bool isActive,
            ViewModelBase model = null,
            IViewAnimation animation = null
        ) where T : ViewBase;
        // move ViewModelBase and IViewAnimation into separate controller

        public bool TryGetView<T>(string name, out T view) where T : ViewBase;
        public bool IsActive(string name);
    }
}