import { S as StorageAdapter } from './types-BaZccpvk.js';

/**
 * 通用存储 Hook
 * 支持多平台：Web、React Native、小程序
 *
 * 优点：
 * 1. 异步读取，不阻塞渲染
 * 2. 统一的错误处理
 * 3. 类型安全
 * 4. 跨平台支持
 * 5. 自动同步（支持的平台）
 */

declare function useStorage<T>(storage: StorageAdapter, key: string, defaultValue: T): [T, (value: T) => void, () => void, boolean];

/**
 * Web 平台 localStorage Hook
 * 基于通用 useStorage 的便捷封装
 */
/**
 * Web 平台的 localStorage Hook
 *
 * @param key - 存储键名
 * @param defaultValue - 默认值
 * @returns [value, setValue, removeValue, isLoading]
 */
declare function useLocalStorage<T>(key: string, defaultValue: T): [T, (value: T) => void, () => void, boolean];

/**
 * React Native 的 AsyncStorage Hook
 *
 * @param key - 存储键名
 * @param defaultValue - 默认值
 * @returns [value, setValue, removeValue, isLoading]
 */
declare function useAsyncStorage<T>(key: string, defaultValue: T): [T, (value: T) => void, () => void, boolean];

/**
 * 小程序的 Taro Storage Hook
 *
 * @param key - 存储键名
 * @param defaultValue - 默认值
 * @returns [value, setValue, removeValue, isLoading]
 */
declare function useTaroStorage<T>(key: string, defaultValue: T): [T, (value: T) => void, () => void, boolean];

/**
 * Electron 桌面端的 Storage Hook
 *
 * 在 Electron 渲染进程中使用 localStorage
 * 支持跨窗口同步
 *
 * @param key - 存储键名
 * @param defaultValue - 默认值
 * @returns [value, setValue, removeValue, isLoading]
 *
 * @example
 * ```tsx
 * const [token, setToken, removeToken] = useElectronStorage('auth-token', '')
 * ```
 */
declare function useElectronStorage<T>(key: string, defaultValue: T): [T, (value: T) => void, () => void, boolean];

export { useLocalStorage as a, useAsyncStorage as b, useTaroStorage as c, useElectronStorage as d, useStorage as u };
