import { apiRequest, setTokens, clearTokens } from '../lib/api' import { clearActiveBusiness } from '../lib/businessContext' import type { AuthUser, LoginResponse, MeResponse, OtpSendResponse, OtpVerifyResponse, } from '../types/auth' export async function login(cellNumber: string, password: string) { const data = await apiRequest('/auth/login', { method: 'POST', body: { cellNumber, password }, }) setTokens(data.accessToken, data.refreshToken) return data } export async function fetchCurrentUser(signal?: AbortSignal) { return apiRequest('/auth/me', { auth: true, signal }) } export async function sendOtp(cellNumber: string, domain?: string) { return apiRequest('/auth/send-otp', { method: 'POST', body: domain ? { cellNumber, domain } : { cellNumber }, }) } export async function verifyOtp(cellNumber: string, code: string) { return apiRequest('/auth/verify-otp', { method: 'POST', body: { cellNumber, code }, }) } export async function loginWithOtp(cellNumber: string, code: string) { const data = await apiRequest('/auth/login-otp', { method: 'POST', body: { cellNumber, code }, }) setTokens(data.accessToken, data.refreshToken) return data } export async function resetPassword(cellNumber: string, code: string, newPassword: string) { return apiRequest<{ message: string }>('/auth/reset-password', { method: 'POST', body: { cellNumber, code, newPassword }, }) } export async function changePassword(currentPassword: string, newPassword: string) { return apiRequest<{ message: string }>('/auth/change-password', { method: 'POST', auth: true, body: { currentPassword, newPassword }, }) } export async function updateProfile(payload: { firstName?: string lastName?: string firstNameEn?: string lastNameEn?: string email?: string | null about?: string instagram?: string telegramId?: string linkedin?: string }) { return apiRequest<{ message: string; user: AuthUser }>('/auth/profile', { method: 'PATCH', auth: true, body: payload, }) } export function logout() { clearTokens() clearActiveBusiness() }