import { ComponentFunction } from '../types'; declare global { namespace JSX { interface IntrinsicElements { 'router-outlet': any; } } } export interface ShouldEnterCallbackArgs { path: string; params: Record | undefined; state: Record | undefined; router: Router; } export interface ShouldEnterCallback { (args: ShouldEnterCallbackArgs): boolean | RouterPushParameters | Promise; } export interface LoaderCallbackArgs { path: string; params: Record | undefined; state: Record | undefined; } export type LoaderCallback = (args: LoaderCallbackArgs) => Promise | unknown; export type RouteComponentProps = { loaderResult: LR; params: Record; state: Record; }; type RouteBaseConfig = { id?: string; memo?: boolean; shouldEnter?: ShouldEnterCallback; loader?: LoaderCallback; onEnter?: () => void; onLeave?: (params: Record) => void; component: ComponentFunction; }; export type RoutePathConfig = RouteBaseConfig & { path: string; children?: RouteConfig[]; }; export type RouteIndexConfig = RouteBaseConfig & { index: boolean; }; export type RouteConfig = RoutePathConfig | RouteIndexConfig; export type RouterConfig = { routes: (RouteConfig & { default?: boolean; })[]; base?: string; onNoMatch?: () => void; layout?: ComponentFunction; ignoreRouterLink?: boolean; useViewTransition?: boolean; }; export type NavigationMatchMetadata = { path: string; routes: RouteConfig[]; params?: Record | undefined; }; export type RouterPushParameters = { path: string | URL; state?: Record; }; export type OnRouteChangeCallbackParameters = { path: string; params: Record; state: Record; }; export type OnRouteChangeCallback = (params: OnRouteChangeCallbackParameters) => void; export type Router = { rootId: string; container: HTMLElement; navigate: (path: string) => void; push: (path: string | URL, state?: Record) => void; replace: (path: string | URL, state?: Record) => void; state: Record; matchedRouteId: string; navigateState: { isNavigating: boolean; }; navigationMatchMetadata?: NavigationMatchMetadata; events: { onRouteChange: (callback: OnRouteChangeCallback) => void; }; }; export {};