import { AxiosInstance } from "axios";

/**
 * Datos requeridos para iniciar sesión.
 */
export interface LoginCredentials {
  email: string;
  password: string;
}

/**
 * Respuesta esperada al iniciar sesión correctamente.
 */
export interface AuthResponse {
  access_token: string;
}

/**
 * Crea funciones de autenticación usando una instancia Axios.
 *
 * @param api - Instancia Axios preconfigurada.
 * @returns Funciones para login y logout.
 */
export const createAuthActions = (api: AxiosInstance) => {
  /**
   * Envía credenciales al endpoint de login y devuelve el token.
   *
   * @param credentials - Correo y contraseña del usuario.
   * @returns Promesa con el token JWT.
   */
  const login = async (credentials: LoginCredentials): Promise<AuthResponse> => {
    const response = await api.post<AuthResponse>("/auth/login", credentials);
    return response.data;
  };

  /**
   * Realiza un logout desde el backend si aplica, o simplemente resuelve.
   * Puede modificarse para llamar a un endpoint si se requiere.
   *
   * @returns Promesa resuelta.
   */
  const logout = async (): Promise<void> => {
    // Ejemplo: await api.post('/auth/logout');
    return Promise.resolve();
  };

  return {
    login,
    logout,
  };
};
