import apiClient from './api';

export const authService = {
  /**
   * Register a new user
   * @param {Object} userData - User registration data
   * @param {string} userData.email - User's email
   * @param {string} userData.firstName - User's first name
   * @param {string} userData.lastName - User's last name
   * @returns {Promise} Promise with the API response
   */
  register: async (userData) => {
    try {
      const response = await apiClient.post('/auth/register', userData);
      return response.data;
    } catch (error) {
      throw error.response?.data || { message: 'An unknown error occurred' };
    }
  },

  /**
   * Request a login code
   * @param {string} email - User's email
   * @returns {Promise} Promise with the API response
   */
  requestLoginCode: async (email) => {
    try {
      const response = await apiClient.post('/auth/login-request', { email });
      return response.data;
    } catch (error) {
      throw error.response?.data || { message: 'An unknown error occurred' };
    }
  },

  /**
   * Verify login code
   * @param {Object} verifyData - Verification data
   * @param {string} verifyData.email - User's email
   * @param {string} verifyData.code - Login code
   * @returns {Promise} Promise with the API response
   */
  verifyCode: async (verifyData) => {
    try {
      const response = await apiClient.post('/auth/verify', verifyData);
      return response.data;
    } catch (error) {
      throw error.response?.data || { message: 'An unknown error occurred' };
    }
  },

  /**
   * Verify API key
   * @param {string} apiKey - API key to verify
   * @returns {Promise} Promise with the API response
   */
  verifyApiKey: async (apiKey) => {
    try {
      const response = await apiClient.post('/auth/verify-key', { apiKey });
      return response.data;
    } catch (error) {
      throw error.response?.data || { message: 'An unknown error occurred' };
    }
  },

  /**
   * Logout
   * @param {string} userId - User ID to logout
   * @returns {Promise} Promise with the API response
   */
  logout: async (userId) => {
    try {
      const response = await apiClient.post('/auth/logout', { userId });
      return response.data;
    } catch (error) {
      throw error.response?.data || { message: 'An unknown error occurred' };
    }
  },
};

export default authService;