import { apiClient } from './client' import type { ApiResponse } from './types' import type { RealnameStatusValue, RiskStatus, UserStatus } from '@/types/status' export interface AuthUser { id: number phone: string nickname: string avatar_url: string realname_status: RealnameStatusValue risk_status: RiskStatus credit_score: number status: UserStatus } export interface TokenPair { access_token: string refresh_token: string token_type: string expires_in: number } export interface LoginData { user: AuthUser tokens: TokenPair } export async function sendSmsCode(phone: string) { const { data } = await apiClient.post>('/auth/sms/send', { phone, }) return data.data } export async function loginWithSms(phone: string, code: string) { const { data } = await apiClient.post>('/auth/sms/login', { phone, code }) return data.data } export async function fetchMe() { const { data } = await apiClient.get>('/me') return data.data } export async function updateMe(payload: Pick) { const { data } = await apiClient.put>('/me', payload) return data.data } /** Manually refresh user token (for store to call on app init) */ export async function refreshUserToken(refreshToken: string) { const { data } = await apiClient.post>('/auth/refresh', { refresh_token: refreshToken, }) return data.data }