import { AnimationBuilder, ComponentProps } from '../../../interface'; import { NavigationHookCallback } from '../../route/route-interface'; export interface HTMLStencilElement extends HTMLElement { componentOnReady(): Promise; } export interface NavOutlet { setRouteId(id: string, params: ComponentProps | undefined, direction: RouterDirection, animation?: AnimationBuilder): Promise; getRouteId(): Promise; } export interface RouterEventDetail { from: string | null; redirectedFrom: string | null; to: string; } export interface RouteRedirect { from: string[]; to?: ParsedRoute; } export interface RouteWrite { changed: boolean; element: HTMLElement | undefined; markVisible?: () => void | Promise; } export interface RouteID { id: string; element: HTMLElement | undefined; params?: { [key: string]: any; }; } export interface RouteEntry { id: string; path: string[]; params: { [key: string]: any; } | undefined; beforeLeave?: NavigationHookCallback; beforeEnter?: NavigationHookCallback; } export interface RouteNode extends RouteEntry { children: RouteTree; } export interface ParsedRoute { segments: string[]; queryString?: string; } export declare type RouterDirection = 'forward' | 'back' | 'root'; export declare type NavOutletElement = NavOutlet & HTMLStencilElement; export declare type RouteChain = RouteEntry[]; export declare type RouteTree = RouteNode[];