/**
 * @edu/hooks - 共享 Hooks 库
 *
 * 维护者：ai13（teacher-portal）
 * 关联文档：teacher-portal 02-architecture-design.md §8
 *
 * 包含：
 * - useAuth：会话状态（user/token/login/logout/refresh）
 * - usePermission：权限查询（hasPermission/hasAny/hasAll + dataScope）
 * - useViewports：视口列表（按 scope 过滤）
 * - useApi：ApiClient 实例（注入 token + 401 处理 + trace_id）
 * - useA11yId：唯一 ARIA ID 生成
 * - useAriaLive：aria-live 区域管理
 * - useToast：全局 toast 通知
 * - useTraceId：当前会话 trace_id
 *
 * 设计原则：
 * - hooks 不直接调 API，保持纯客户端逻辑（API 调用由 apps/* 注入）
 * - 权限/视口数据通过 props 注入，避免 hooks 包耦合 iam
 * - token 存储使用 localStorage（F12 裁决，P2 阶段）
 */

export { useAuth } from "./use-auth.js";
export type { UseAuthReturn } from "./use-auth.js";

export { usePermission } from "./use-permission.js";
export type {
  UsePermissionProps,
  UsePermissionReturn,
} from "./use-permission.js";

export { useViewports } from "./use-viewports.js";
export type { UseViewportsProps, UseViewportsReturn } from "./use-viewports.js";

export { useApi } from "./use-api.js";
export type { UseApiProps, UseApiReturn } from "./use-api.js";

export {
  useA11yId,
  useA11yIds,
  mergeA11yProps,
  describeInput,
} from "./use-a11y-id.js";

export { useAriaLive } from "./use-aria-live.js";
export type { UseAriaLiveReturn, AriaLivePoliteness } from "./use-aria-live.js";

export { useToast } from "./use-toast.js";
export type { UseToastReturn } from "./use-toast.js";

export { useTraceId } from "./use-trace-id.js";
export type { UseTraceIdReturn } from "./use-trace-id.js";

// 共享类型
export type {
  UserSession,
  DataScope,
  PermissionContext,
  Viewport,
  ToastMessage,
  AuthState,
} from "./types.js";
