import { PlainObjectType } from '../types/generic.types';

/**
 * Gets the global state for all weavy instances combined, stored in the browser history state.
 * The state has the same structure as a single weavy instance state.
 *
 * @param {string} id - The group identifier for storage.
 * @returns {object}
 */
export declare function getBrowserStateProperty<T>(prefix: string, property: PropertyKey): T;
/**
 * Saves a weavy state to the browser history by either push or replace.
 * Any existing state will be preserved and existing states from other weavy instances will be merged.
 *
 * @param {string} id - The group id for storage.
 * @param {any} state - The state to add to any existing state
 * @param {string} [action] - If set to "replace", the current history state will be updated.
 * @param {any} [url] - Any new url to use for the state. If omitted, the current location will be reused.
 */
export declare function setBrowserState(prefix: string, state: unknown, action?: "push" | "replace", url?: URL | string): void;
export declare function restoreHistoryProperties<T = PlainObjectType>(parent: T, key: string, properties: Array<keyof T>): void;
export declare function pushHistoryProperties<T = object>(parent: T, key: string, properties: Array<keyof T>, action?: "push" | "replace"): void;
export declare function updateHistoryProperties<T = object>(parent: T, key: string, properties: Array<keyof T>): void;
export declare function itemHasChanged(a: unknown, b: unknown): boolean;
//# sourceMappingURL=browser-history.d.ts.map