import type { AdminNavItem } from "@/modules/_config/admin-nav";

/** `GET /api/v1/admin/auth/captcha` 成功信封内的 `data` */
export type AdminAuthCaptchaResponse = {
  captcha_key: string;
  image_base64: string;
};

/** `POST /api/v1/admin/auth/login` 请求体 */
export type AdminAuthLoginRequest = {
  account: string;
  password: string;
  captcha_key: string;
  captcha_code: string;
};

import type { AdminAgentContext } from "@/types/api/admin-agent";

/** 登录态账号形态（与 Laravel `auth/me.account_kind` 对齐） */
export type AdminAccountKind =
  | "super_admin"
  | "site_admin"
  | "site_finance"
  | "site_cs"
  | "agent_operator"
  | "platform_account";

/** 登录成功后缓存于会话的管理员摘要 */
export type AdminProfile = {
  id: number;
  username: string;
  nickname: string;
  email: string | null;
  /** Legacy 产品权限 slug（如 `prd.*`）；侧栏与旧页面门控 */
  permissions?: string[];
  /** 当前管理员可见的后台菜单，由 Laravel 注册表统一下发。 */
  navigation?: AdminNavItem[];
  /** 代理账号绑定节点；超管为 null */
  agent?: AdminAgentContext | null;
  is_super_admin?: boolean;
  /** 账号形态：超管 / 站点运营 / 代理经营 / 其他平台账号 */
  account_kind?: AdminAccountKind;
  /** API 鉴权 action code（如 `service.report.view`）；与后端 `effectiveMenuActionPermissionCodes` 一致 */
  operational_permissions?: string[];
  /** 当前代理可下放给下级的 prd.* 上限（未配置 grants 时与操作权限一致） */
  delegation_ceiling?: string[];
  /** 平台账号可访问站点；代理账号为 undefined，见 agent.site_code */
  accessible_sites?: { id: number; code: string; name: string }[];
  /** 站点管理员主站点上下文；代理/超管为 null */
  site?: { id: number; code: string; name: string } | null;
};

/** `POST /api/v1/admin/auth/login` 成功信封内的 `data` */
export type AdminAuthLoginResponse = {
  token?: string;
  token_type?: string;
  admin: AdminProfile;
};

/** `GET /api/v1/admin/auth/me` 成功信封内的 `data` */
export type AdminAuthMeResponse = {
  admin: AdminProfile;
};
