import { apiClient } from "@/lib/api/axios-client";
import { apiEndpoints } from "@/lib/api/endpoints";
import type {
  AuthResponse,
  LoginPayload,
  RegisterPayload,
  VerifyOtpPayload,
  VerifyOtpResponse,
} from "@/features/auth/auth.types";
import { ApiError } from "@/lib/api/api-error";

export async function login(payload: LoginPayload) {
  const { data } = await apiClient.post<AuthResponse>(apiEndpoints.auth.login, payload);
  assertSuccess(data);
  return data;
}

export async function verifyOtp(payload: VerifyOtpPayload) {
  const { data } = await apiClient.post<VerifyOtpResponse>(apiEndpoints.auth.verifyOtp, payload);
  assertSuccess(data);
  return data;
}

export async function register(payload: RegisterPayload) {
  const { data } = await apiClient.post<AuthResponse>(apiEndpoints.auth.register, payload);
  assertSuccess(data);
  return data;
}

function assertSuccess(response: { status: string; message?: string }) {
  if (response.status !== "success") {
    throw new ApiError(response.message || "Something went wrong. Please try again.");
  }
}
