import type { FluxelComponent, FluxelJSXElement, StateParam, TypedEventTarget } from "../type.js"; export type RouteConfig = { [pattern: string]: (() => string | Node) | (() => Promise<() => string | Node>); }; export type RouterMode = "history" | "hash"; export type RouterOptions = { basePath?: string; mode?: RouterMode; fallback?: FluxelComponent<{}, string | Node> | FluxelComponent<{}, FluxelJSXElement>; }; export type Router = { mode: RouterMode; basePath: string; pathname: string; route: string | null; params: Readonly>; query: Readonly>>; Provider: FluxelComponent<{ classList?: string[]; }, string | Node>; navigate(path: string, options: { replace?: boolean; }): void; deferUpdate(process: () => Promise): void; }; export declare const routerEventTarget: TypedEventTarget<{ "popstate": CustomEvent; }>; export declare function createRouter(config: RouteConfig, options?: RouterOptions): Router; export interface UseRouter { (option?: { optional?: false; }): R; (option?: { optional: true; }): R | null; (option?: { optional?: boolean; }): R | null; } export declare const useRouter: UseRouter; export declare function globalNavigate(path: string, options?: { replace?: boolean; }): void;