import apiClient from './client';
import type {
  LoginRequest,
  LoginResponse,
  ForgotPasswordRequest,
  ResetPasswordRequest,
  RegisterRequest,
  ApiResponse,
  User,
} from '@/types';

export const authApi = {
  login: async (data: LoginRequest) => {
    const response = await apiClient.post<ApiResponse<LoginResponse>>('/auth/login', data);
    return response.data.data;
  },

  register: async (data: RegisterRequest) => {
    const response = await apiClient.post<ApiResponse<User>>('/auth/register', data);
    return response.data.data;
  },

  logout: async () => {
    const response = await apiClient.post<ApiResponse<null>>('/auth/logout');
    return response.data.data;
  },

  forgotPassword: async (data: ForgotPasswordRequest) => {
    const response = await apiClient.post<ApiResponse<null>>('/auth/forgot-password', data);
    return response.data.data;
  },

  resetPassword: async (data: ResetPasswordRequest) => {
    const response = await apiClient.post<ApiResponse<null>>('/auth/reset-password', data);
    return response.data.data;
  },

  getProfile: async () => {
    const response = await apiClient.get<ApiResponse<User>>('/auth/profile');
    return response.data.data;
  },

  updateProfile: async (data: Partial<User>) => {
    const response = await apiClient.put<ApiResponse<User>>('/auth/profile', data);
    return response.data.data;
  },
};
