/**
 * Storage Adapter Interface
 *
 * 定义统一的存储接口，抽象平台差异
 */

export enum StorageKey {
  ACCESS_TOKEN = 'access_token',
  REFRESH_TOKEN = 'refresh_token',
  USER_INFO = 'user_info',
  TENANT_ID = 'tenant_id',
  CURRENT_TENANT = 'current_tenant',
  THEME_MODE = 'theme_mode',
  DESIGN_STYLE = 'design_style',
  LANGUAGE = 'language',
}

export interface IStorageAdapter {
  /**
   * 获取存储的值
   */
  getItem<T = string>(key: StorageKey | string): Promise<T | null>;

  /**
   * 设置存储的值
   */
  setItem<T = any>(key: StorageKey | string, value: T): Promise<void>;

  /**
   * 删除存储的值
   */
  removeItem(key: StorageKey | string): Promise<void>;

  /**
   * 清空所有存储
   */
  clear(): Promise<void>;

  /**
   * 获取所有键
   */
  keys(): Promise<string[]>;
}
