/**
 * HotStaq v0.9.0 client-side runtime.
 *
 * Target: the bundled app.js for `hotstaq build --static` output. Loaded
 * once from index.html, it registers the routes that the build compiler
 * generated into the same bundle, then mounts the correct <template>
 * fragment into #app on load and on every navigation.
 *
 * Covers HS090-10 (Hot.navigate), HS090-11 (template mount + preamble
 * re-execution), and a basic HS090-13 (link interception). HS090-12
 * morph swap, HS090-14 scroll restoration, HS090-16/17 preload tiers
 * and prefetch-on-hover arrive in follow-up commits.
 */
import type { HotCtx } from "../hott/types";
export interface RouteEntry {
    /** URL path the route matches (from HotSite.yaml). */
    path: string;
    /** DOM id of the <template> node containing this route's HTML. */
    templateId: string;
    /** Compiled preamble — receives a fresh hotCtx per mount. */
    preamble?: (hotCtx: HotCtx) => Promise<void> | void;
    /** Inline <script> bodies to re-execute after the template mounts. */
    scripts?: string[];
    /** Preload tier; affects runtime chunk loading (HS090-16, future). */
    preload?: "eager" | "lazy" | "never";
}
/**
 * Register a compiled route with the runtime. Called from the bundler-
 * generated entry file; apps shouldn't need to call this directly.
 */
export declare function registerRoute(entry: RouteEntry): void;
/**
 * Register the auto-generated Web API client (HS090-8). The builder's
 * entry file calls this before the first mount.
 */
export declare function registerApi(api: Record<string, any>): void;
/**
 * HS090-16: register a lazy/never route's chunk URL. When `mount(path)`
 * is called for an unregistered route whose chunk is known, the runtime
 * fetches the chunk (which then calls registerRoute) and retries mount.
 */
export declare function registerChunk(path: string, url: string): void;
/**
 * Explicitly load a route's chunk without mounting. Used by hover
 * prefetch (HS090-17) and callable from preambles that know the user
 * is about to navigate.
 */
export declare function prefetchRoute(path: string): Promise<void>;
/**
 * Change the CSS selector the runtime mounts into. Defaults to "#app".
 */
export declare function configureMount(selector: string): void;
/**
 * Navigate to a new path without a full page reload.
 */
export declare function navigate(path: string, opts?: {
    replace?: boolean;
}): Promise<void>;
/**
 * Look up and mount the route that matches `location.pathname` (or
 * the `targetPath` override if given). Re-entrant: a second call aborts
 * the in-flight preamble of the first via an AbortController signal on
 * the HotCtx.
 */
export declare function mount(targetPath?: string): Promise<void>;
/**
 * Return the HotCtx singleton for the most recent mount. Intended for
 * debugging from the console — preambles receive their own hotCtx
 * parameter and should not reach for this.
 */
export declare function getLastContext(): HotCtx | null;
/**
 * Intercept link clicks (HS090-13) + form submits (HS090-12 subset) —
 * any same-origin <a href> or <form method=get action=...> routes via
 * navigate() instead of a full page load. Links with [download],
 * [target=_blank], or [data-spa-ignore] skip; forms with
 * [data-spa-ignore] skip.
 */
export declare function installLinkInterceptor(): void;
/**
 * Entry point the bundler-generated entry file invokes.
 */
export declare function start(): void;
//# sourceMappingURL=HotStaticRuntime.d.ts.map