/** * useSuspenseSessionStorageState * @description Suspense-enabled hook for sessionStorage state management with cross-tab synchronization * @see {@link https://rooks.vercel.app/docs/hooks/useSuspenseSessionStorageState} */ /** * Clear cached entry for a specific key - useful for testing * @internal * @param key - The sessionStorage key to clear from cache */ export declare function clearCache(key?: string): void; /** * Control methods interface for the hook */ interface UseSuspenseSessionStorageStateControls { /** * Get the current value from the hook's state * @returns The current state value */ getItem: () => T; /** * Set a new value in sessionStorage and update state * @param value - The new value to set */ setItem: (value: T) => void; /** * Delete the item from sessionStorage and reset to initial value */ deleteItem: () => void; } /** * Return type for the useSuspenseSessionStorageState hook */ type UseSuspenseSessionStorageStateReturnValue = [ T, UseSuspenseSessionStorageStateControls ]; /** * Suspense-enabled hook for sessionStorage state management with cross-tab synchronization * * This hook will suspend (throw a promise) during initialization to work with React Suspense. * It provides sessionStorage state management with proper TypeScript generics, JSON serialization, * error handling, and cross-tab synchronization. * * Note: Unlike localStorage, sessionStorage is tab-specific, so cross-tab synchronization * is primarily for handling storage events within the same tab. * * @param key - The sessionStorage key to use * @param initializer - Function that takes the current sessionStorage value (string | null) and returns the initial state of type T * @returns Tuple containing [currentValue, controls] where controls has getItem, setItem, and deleteItem methods * * @throws {Promise} When data is still loading (for Suspense) * @throws {Error} When initialization fails * * @example * ```tsx * function MyComponent() { * const [count, { setItem, deleteItem }] = useSuspenseSessionStorageState( * 'my-counter', * (currentValue) => currentValue ? parseInt(currentValue, 10) : 0 * ); * * return ( *
*

Count: {count}

* * *
* ); * } * * function App() { * return ( * Loading...}> * * * ); * } * ``` */ declare function useSuspenseSessionStorageState(key: string, initializer: (currentValue: string | null) => T): UseSuspenseSessionStorageStateReturnValue; export { useSuspenseSessionStorageState };