import api from './api' import type { LoginRequest, RegisterRequest, TokenResponse, User, ProfileUpdatePayload, ChangePasswordPayload, MFASetupResponse, MFAVerifyPayload } from '@/types' export async function login(data: LoginRequest): Promise { const response = await api.post('/auth/login', data) localStorage.setItem('access_token', response.data.access_token) localStorage.setItem('refresh_token', response.data.refresh_token) return response.data } export async function register(data: RegisterRequest): Promise<{ user: User }> { const response = await api.post<{ user: User }>('/auth/register', data) return response.data } export async function logout(): Promise { try { const refreshToken = localStorage.getItem('refresh_token') if (refreshToken) { await api.post('/auth/logout', { refresh_token: refreshToken }) } } finally { localStorage.removeItem('access_token') localStorage.removeItem('refresh_token') } } export async function getMe(): Promise { const response = await api.get('/auth/me') return response.data } export async function updateProfile(data: ProfileUpdatePayload): Promise { const response = await api.put('/auth/profile', data) return response.data } export async function uploadAvatar(file: File): Promise { const formData = new FormData() formData.append('file', file) const response = await api.post('/auth/avatar', formData, { headers: { 'Content-Type': 'multipart/form-data' }, }) return response.data } export async function deleteAvatar(): Promise { const response = await api.delete('/auth/avatar') return response.data } export async function changePassword(data: ChangePasswordPayload): Promise { await api.post('/auth/change-password', data) } export async function setupMFA(): Promise { const response = await api.post('/auth/mfa/setup') return response.data } export async function verifyMFA(data: MFAVerifyPayload): Promise { await api.post('/auth/mfa/verify', data) } export async function disableMFA(password: string): Promise { await api.delete('/auth/mfa', { data: { password } }) }