import { match, MatchResult, MatchResultParams } from './match'; import { History } from "history"; export { match, MatchResult, MatchResultParams }; export interface RouteChangeEvent { oldPath: string; newPath: string; } export interface RouteEnterEvent extends RouteChangeEvent { params: MatchResultParams; search: { [key: string]: string; }; } export declare type RouteBeforeEnterResult = void | null | undefined | { redirect: string; replace?: boolean; } | Promise<{ redirect: string; replace?: boolean; }>; export declare type RouteEnterResult = void; export declare type RouteBeforeLeaveResult = void | null | undefined | boolean | Promise | { redirect: string; replace?: boolean; } | Promise<{ redirect: string; replace?: boolean; }>; export interface RouteConfig { /** * The pattern to match against */ $: string; /** * Called before entering a route. This is your chance to redirect if you want. **/ beforeEnter?: (evt: RouteEnterEvent) => RouteBeforeEnterResult; /** * Called on entering a route. **/ enter?: (evt: RouteEnterEvent) => RouteEnterResult; /** * On route leave, * you can redirect to elsewhere if you want or just return false to prevent leaving **/ beforeLeave?: (evt: RouteChangeEvent) => RouteBeforeLeaveResult; } export interface RouterConfig { type: "hash" | "mem" | "browser"; disableInitialRoute?: boolean; } export declare class Router { routes: RouteConfig[]; private config; readonly history: History; constructor(routes: RouteConfig[], config: RouterConfig); /** * Runs through the config and triggers an routes that matches the current path */ init(): Promise | undefined; navigate(path: string, replace?: boolean): void; handleAnchorClick(e: Event | MouseEvent, replace?: boolean, pathOverride?: string): void; private trigger; }