import apiClient from './client' import type { AuthResponse, RegisterResponse, TokenResponse, User } from '../types' export const authApi = { // Telegram WebApp authentication loginTelegram: async (initData: string): Promise => { const response = await apiClient.post('/cabinet/auth/telegram', { init_data: initData, }) return response.data }, // Telegram Login Widget authentication loginTelegramWidget: async (data: { id: number first_name: string last_name?: string username?: string photo_url?: string auth_date: number hash: string }): Promise => { const response = await apiClient.post('/cabinet/auth/telegram/widget', data) return response.data }, // Email login loginEmail: async (email: string, password: string): Promise => { const response = await apiClient.post('/cabinet/auth/email/login', { email, password, }) return response.data }, // Register email (link to existing Telegram account) registerEmail: async (email: string, password: string): Promise<{ message: string; email: string }> => { const response = await apiClient.post('/cabinet/auth/email/register', { email, password, }) return response.data }, // Register standalone email account (no Telegram required) // Returns message - user must verify email before login registerEmailStandalone: async (data: { email: string password: string first_name?: string language?: string referral_code?: string }): Promise => { const response = await apiClient.post('/cabinet/auth/email/register/standalone', data) return response.data }, // Verify email and get auth tokens verifyEmail: async (token: string): Promise => { const response = await apiClient.post('/cabinet/auth/email/verify', { token }) return response.data }, // Resend verification email resendVerification: async (): Promise<{ message: string }> => { const response = await apiClient.post('/cabinet/auth/email/resend') return response.data }, // Refresh token refreshToken: async (refreshToken: string): Promise => { const response = await apiClient.post('/cabinet/auth/refresh', { refresh_token: refreshToken, }) return response.data }, // Logout logout: async (refreshToken: string): Promise => { await apiClient.post('/cabinet/auth/logout', { refresh_token: refreshToken, }) }, // Forgot password forgotPassword: async (email: string): Promise<{ message: string }> => { const response = await apiClient.post('/cabinet/auth/password/forgot', { email }) return response.data }, // Reset password resetPassword: async (token: string, password: string): Promise<{ message: string }> => { const response = await apiClient.post('/cabinet/auth/password/reset', { token, password, }) return response.data }, // Get current user getMe: async (): Promise => { const response = await apiClient.get('/cabinet/auth/me') return response.data }, }