import http from "./http"; export interface CaptchaResponse { captchaId: string; imageBase64: string; } export interface TenantInfo { tenantId: number; tenantCode: string; tenantName: string; } export interface TokenResponse { accessToken: string; refreshToken: string; accessExpiresInMinutes: number; refreshExpiresInDays: number; availableTenants?: TenantInfo[]; tenantMode?: "single" | "multi"; multiTenantEnabled?: boolean; currentTenantId?: number; } export interface LoginPayload { username: string; password: string; tenantCode?: string; captchaId?: string; captchaCode?: string; deviceCode?: string; } export interface DeviceCodePayload { username: string; password: string; captchaId?: string; captchaCode?: string; deviceName?: string; } export async function fetchCaptcha() { const resp = await http.get("/sys/auth/captcha"); return resp.data.data as CaptchaResponse; } export async function login(payload: LoginPayload) { const resp = await http.post("/sys/auth/login", payload); return resp.data.data as TokenResponse; } export async function createDeviceCode(payload: DeviceCodePayload) { const resp = await http.post("/sys/auth/device-code", payload); return resp.data.data as string; } export async function refreshToken(refreshToken: string) { const resp = await http.post("/sys/auth/refresh", { refreshToken }); return resp.data.data as TokenResponse; } export async function switchTenant(tenantId: number) { const resp = await http.post(`/sys/auth/switch-tenant?tenantId=${tenantId}`); return resp.data.data as TokenResponse; }