/** * The unprefixed params a URL-synced table owns. `tf` is handled separately — * every URL param starting with `tf[` belongs to the table's dedicated * filters, however many keys they expand to. */ export declare const TABLE_OWNED_QUERY_KEYS: string[]; /** The unprefixed params a URL-synced board owns. */ export declare const BOARD_OWNED_QUERY_KEYS: string[]; export type UrlSyncScope = { key: string | null; ownedKeys: string[]; }; /** * Writes a synced component's query onto the page URL via `replaceState` — * never `pushState` — so filter changes don't create history entries, exactly * like the tabs component's own query sync. Only the scope's owned params are * touched; every other param on the page (another component's, or the tabs * `tabs` param) survives untouched. */ export declare function writeQueryToUrl(params: Record, scope: UrlSyncScope): void; /** * Registers a mounted synced component against its URL query scope, so two * differently-scoped components never fight over the same params — the * server can't see page composition, so this is a client-side dev guard only * (precedent: the dev warn in `navigation.tsx`). Two instances of the *same* * synced definition on one page are unsupported and not warned about here. */ export declare function claimUrlSyncScope(scope: UrlSyncScope, componentId: string): () => void;