/** Options for useLocalStorage. */ export interface UseLocalStorageOptions { /** Custom serializer (default: JSON.stringify). */ serializer?: (value: T) => string; /** Custom deserializer (default: JSON.parse). */ deserializer?: (raw: string) => T; /** Called when read/write/remove fails. Falls back to console.warn if omitted. */ onError?: (error: unknown, operation: 'read' | 'write' | 'remove') => void; } /** * Persists state to localStorage with automatic serialization, * SSR safety, and same-tab + cross-tab synchronization. * * @param key - The localStorage key * @param initialValue - Default value when key doesn't exist * @param options - Optional serializer, deserializer, and error handler * @returns Tuple of [value, setter, remover] * * @example * const [lang, setLang, removeLang] = useLocalStorage('language', 'en'); * setLang('de'); // sets and persists * setLang(prev => prev + '-US'); // functional update * removeLang(); // removes key, reverts to 'en' */ export declare function useLocalStorage(key: string, initialValue: T, options?: UseLocalStorageOptions): [T, (value: T | ((prev: T) => T)) => void, () => void];