import { nothing } from "lit-html"; import type { ComponentType } from "../Template/x-x.types"; import { type RouterScrollOption } from "./scrollOutlet"; type RouteConfig = { path: string; component: ComponentType; }; export type RouterOptions = { /** * Scroll this router's outlet into view when `patternsAtom` changes * (matched route pattern changed — not param-only / qs / hash). * - `true` / omitted — enabled (default) * - `false` — opt out * - `ScrollIntoViewOptions` — enabled with custom options */ scroll?: RouterScrollOption; }; /** * Internal matcher used by {@link Router}. Not part of the public API — * nest UI with `paramsAtom` / `qsAtom` conditionals instead of calling this. */ export declare const route: (path: string, viewFn: ComponentType, props?: Record) => typeof nothing | import("lit-html").TemplateResult<1> | null; /** * Ordered router — first match wins. **Only one** {@link Router} or * {@link animatedRouter} may be mounted per app/scope (shared `patternsAtom`). * Nest screens with conditionals on `paramsAtom` / `qsAtom` / `pathAtom`. * * By default, scrolls the outlet into view when **`patternsAtom` changes**. * Param-only / qs / hash updates do not scroll. Skipped on first paint. * * @example * const appRouter = Router([ * { path: "/", component: HomePage }, * { path: "/users/:id", component: UserPage }, * ], NotFoundPage); * * ${appRouter()} * * // Nested UI inside UserPage — no second router: * paramsAtom().photoId ? x(Photo) : nothing */ export declare const Router: (routeConfig: RouteConfig[], NotFound?: ComponentType, options?: RouterOptions) => () => import("lit-html").TemplateResult<1>; export {}; //# sourceMappingURL=Router.d.ts.map