export interface IRouterSlot extends HTMLElement { readonly route: IRoute | null; readonly isRoot: boolean; readonly fragments: IPathFragments | null; readonly match: IRouteMatch | null; routes: IRoute[]; add: ((routes: IRoute[], navigate?: boolean) => void); clear: (() => void); load: (() => Promise); constructAbsolutePath: ((path: PathFragment) => string); parent: IRouterSlot

| null | undefined; queryParentRouterSlot: (() => IRouterSlot

| null); } export declare type RoutingInfo = { slot: IRouterSlot; match: IRouteMatch; }; export declare type CustomResolver = ((info: RoutingInfo) => boolean | void | Promise | Promise); export declare type Guard = ((info: RoutingInfo) => boolean | Promise); export declare type Cancel = (() => boolean); export declare type PageComponent = HTMLElement; export declare type ModuleResolver = Promise<{ default: any; }>; export declare type Class = { new (...args: any[]): T; }; export declare type SetupComponent = ((component: PageComponent, info: RoutingInfo) => void); export declare type RouterTree = { slot: IRouterSlot; } & { child?: RouterTree; } | null | undefined; /** * The base route interface. * D = the data type of the data */ export interface IRouteBase { path: PathFragment; data?: D; guards?: Guard[]; fuzzy?: boolean; } /** * Route type used for redirection. */ export interface IRedirectRoute extends IRouteBase { redirectTo: string; preserveQuery?: boolean; } /** * Route type used to resolve and stamp components. */ export interface IComponentRoute extends IRouteBase { component: Class | ModuleResolver | PageComponent | (() => Class) | (() => PageComponent) | (() => ModuleResolver); setup?: SetupComponent; } /** * Route type used to take control of how the route should resolve. */ export interface IResolverRoute extends IRouteBase { resolve: CustomResolver; } export declare type IRoute = IRedirectRoute | IComponentRoute | IResolverRoute; export declare type PathFragment = string; export declare type IPathFragments = { consumed: PathFragment; rest: PathFragment; }; export interface IRouteMatch { route: IRoute; params: Params; fragments: IPathFragments; match: RegExpMatchArray; } export declare type PushStateEvent = CustomEvent; export declare type ReplaceStateEvent = CustomEvent; export declare type ChangeStateEvent = CustomEvent; export declare type WillChangeStateEvent = CustomEvent; export declare type NavigationStartEvent = CustomEvent>; export declare type NavigationSuccessEvent = CustomEvent>; export declare type NavigationCancelEvent = CustomEvent>; export declare type NavigationErrorEvent = CustomEvent>; export declare type NavigationEndEvent = CustomEvent>; export declare type Params = { [key: string]: string; }; export declare type Query = { [key: string]: string; }; export declare type EventListenerSubscription = (() => void); /** * RouterComponent related events. */ export declare enum RouterSlotEventKind { ChangeState = "changestate" } /** * History related events. */ export declare enum GlobalRouterEventKind { PushState = "pushstate", ReplaceState = "replacestate", PopState = "popstate", ChangeState = "changestate", WillChangeState = "willchangestate", NavigationStart = "navigationstart", NavigationCancel = "navigationcancel", NavigationError = "navigationerror", NavigationSuccess = "navigationsuccess", NavigationEnd = "navigationend" } export interface ISlashOptions { startSlash: boolean; endSlash: boolean; }