import { NavigationFailure } from 'vue-router' import { NavigationGuardReturn, NavigationGuardNextCallback } from '../vue-router-utils' import { RoutiderLocation } from '../route/location' import { RoutiderRoutes, RouteNames } from '../options/options' import { RoutiderRouteLocation } from './router' import { ValidTypeLocation } from '../createRoutider' /** * Typed `NavigationGuardNext` */ export interface RoutiderNavigationGuardNext { (): void (error: Error): void ( location: RoutiderRouteLocation | ValidTypeLocation ): void (valid: boolean): void (cb: NavigationGuardNextCallback): void } /** * Typed `NavigationGuardWithThis` */ export interface RoutiderNavigationGuardWithThis< T, Routes extends RoutiderRoutes > { ( this: T, to: RoutiderLocation>, from: RoutiderLocation>, next: RoutiderNavigationGuardNext ): NavigationGuardReturn | Promise } /** * Typed `PostNavigationGuard` */ export interface RoutiderPostNavigationGuard { ( to: RoutiderLocation>, from: RoutiderLocation>, failure?: NavigationFailure | void // eslint-disable-next-line @typescript-eslint/no-explicit-any ): any } /** * Typed `NavigationGuard` */ export interface RoutiderNavigationGuard { ( to: RoutiderLocation>, from: RoutiderLocation>, next: RoutiderNavigationGuardNext ): NavigationGuardReturn | Promise }