import { type TableViewAxis, type TableViewLike } from './table-view.js'; /** * Reset the module-scope writer between tests. The writer's pending-set and * memo are keyed to a page's navigation stream; a test runner reusing the * module across tests would otherwise leak one test's in-flight markers into * the next. * @internal test-only — not part of the public API. */ export declare function __resetUrlWriterForTests(): void; /** * Size of the writer's live-key registry — lets the SSR suite assert that * the module-global registry does not grow across simulated server requests. * @internal test-only — not part of the public API. */ export declare function __urlWriterLiveKeyCountForTests(): number; /** Options for {@link bindViewToUrl}. */ export interface UrlViewBindingOptions { /** Axes to bind. @default all six */ axes?: readonly TableViewAxis[]; /** Debounce for view → URL writes in ms. @default 300 */ debounceMs?: number; /** * Replace the current history entry instead of pushing a new one, so rapid * sort/filter/page edits do not flood the back button. * * Decided for v8: this default covers **all** binding writes — v7 * continuity, keeping interactions from polluting the back button — and * there is deliberately no per-interaction-type history mapping (a page * turn pushing while a keystroke replaces); this one global option is the * whole knob. Mirror-only writes (`reflectExternal`) always replace, * whatever this is set to. * @default true */ replaceState?: boolean; /** * Key prefix (`prefix: 't_'` → `?t_q=…&t_page=…`) — namespace for a second * bound table on the same page. * @default '' */ prefix?: string; /** * Whether *external* changes (a storage seed) are mirrored into the URL. * * - `false` (default): the address bar does not change without a reader * interaction — a restored "yesterday's view" stays out of the URL until * the reader's first edit, which then serializes the full snapshot. * - `true`: an external application reaches the URL immediately, always * via `replaceState` (a mirror is not a reader action, so it never * mints a history entry) — the restored state becomes shareable without * an interaction. * @default false */ reflectExternal?: boolean; } /** * Bind a view to the page URL. Call during component initialisation: the * init half runs synchronously (SSR-safe — a `?sort=…` link renders sorted * server HTML), the runtime halves are effects. * * @example * ```svelte * * * * ``` */ export declare function bindViewToUrl(view: TableViewLike, options?: UrlViewBindingOptions): void;