import api from "@/lib/api/axios";
import type {
  LoginRequest,
  LoginResponse,
  SendOtpRequest,
  SendOtpResponse,
  ForgotPasswordRequest,
  ForgotPasswordResponse,
  ResetPasswordRequest,
  ResetPasswordResponse,
  VerifyOtpRequest,
  VerifyOtpResponse,
  RegisterProviderRequest,
  RegisterProviderResponse,
  AuthUser,
} from "@/types/auth";

export async function loginApi(payload: LoginRequest): Promise<LoginResponse> {
  const { data } = await api.post<LoginResponse>("/auth/login", payload);
  return data;
}

export async function sendOtpApi(
  payload: SendOtpRequest,
): Promise<SendOtpResponse> {
  const { data } = await api.post<SendOtpResponse>("/auth/otp/send", payload);
  return data;
}

export async function forgotPasswordApi(
  payload: ForgotPasswordRequest,
): Promise<ForgotPasswordResponse> {
  const { data } = await api.post<ForgotPasswordResponse>(
    "/auth/forgot-password",
    payload,
  );
  return data;
}

export async function resetPasswordApi(
  payload: ResetPasswordRequest,
): Promise<ResetPasswordResponse> {
  const { data } = await api.post<ResetPasswordResponse>(
    "/auth/reset-password",
    payload,
  );
  return data;
}

export async function getProfileApi(): Promise<AuthUser> {
  const { data } = await api.get<AuthUser>("/auth/profile");
  return data;
}

export async function verifyOtpApi(
  payload: VerifyOtpRequest,
): Promise<VerifyOtpResponse> {
  const { data } = await api.post<VerifyOtpResponse>(
    "/auth/otp/verify",
    payload,
  );
  return data;
}

export async function registerProviderApi(
  payload: RegisterProviderRequest,
): Promise<RegisterProviderResponse> {
  const { data } = await api.post<RegisterProviderResponse>(
    "/auth/provider/register",
    payload,
  );
  return data;
}
