import { InjectionToken } from '@rxdi/core'; import { Observable } from 'rxjs'; import { Outlet } from './outlet'; export declare function Router(): (target: Object, propertyKey: string) => void; export type LazyChildren = (context?: CanActivateContext, commands?: CanActivateCommands) => Promise; export type Router = Outlet; export interface Route { path?: string | string[]; component?: C | Function | string; animate?: boolean | { leave?: string; enter?: string; }; children?: Route[] | LazyChildren; redirect?: string; freeze?: boolean; action?: LazyChildren; canActivate?: Function; } export interface CanActivateContextKeys { delimiter: string | '/'; name: number; optional: boolean; partial: boolean; pattern: string | '.*'; prefix: string | ''; repeat: boolean; } export interface RouteContext extends Route { parent?: { parent?: any; path?: string | string[]; } | null; } export type CanActiveResolverResponse = CanActivateRedirectResult | Promise | boolean | Promise | Observable; export interface CanActivateResolver { canActivate(context: CanActivateContext, commands: CanActivateCommands): CanActiveResolverResponse; } export interface CanActivateRedirectResult { redirect: { from: string; params: any; pathname: string; }; } export interface CanActivateContext { pathname: string; params: any; route: RouteContext; chain?: { route: RouteContext; path: string; element?: HTMLElement; }[]; keys: any[]; next?: (resume?: any, parent?: any, prevResult?: any) => any; } export interface CanActivateCommands { component: (component: string) => HTMLElement; redirect: (path: string | string[]) => CanActivateRedirectResult; } export declare const RouterRoutlet = "router-outlet"; export declare const Routes = "router-routes"; export declare const RouterOptions: InjectionToken; export interface RouterOptions { baseUrl?: string; log?: boolean; freeze?: boolean; } export type Routes = Route[]; export type RouterRoutlet = Outlet; export interface OnBeforeEnter { onBeforeEnter(): Promise | void; } export interface OnAfterEnter { onAfterEnter(): void; } export interface OnBeforeLeave { onBeforeLeave(): void; } export interface OnAfterLeave { onAfterLeave(): void; }