using System;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Navigation;

namespace Wino.Core.Domain.Interfaces;

public interface INavigationService
{
    bool Navigate(WinoPage page,
                         object parameter = null,
                         NavigationReferenceFrame frame = NavigationReferenceFrame.InnerShellFrame,
                         NavigationTransitionType transition = NavigationTransitionType.None);

    Type GetPageType(WinoPage winoPage);
    bool ChangeApplicationMode(WinoApplicationMode mode);
    bool ChangeApplicationMode(WinoApplicationMode mode, ShellModeActivationContext activationContext);
    bool CanGoBack();
    void GoBack(NavigationTransitionEffect slideEffect = NavigationTransitionEffect.FromRight);
}
