import axios from "../../../config/axios";
import {
  type CheckHasAccountPhoneType,
  type CheckHasAccountType,
  type LoginWithOtpType,
  type LoginWithOtpResponse,
  type LoginWithPasswordType,
  type OtpVerifyType,
  type RefreshTokenType,
  type RefreshTokenResponse,
  type RegisterType,
} from "../types/AuthTypes";

export const loginWithPassword = async (params: LoginWithPasswordType) => {
  const { data } = await axios.post(`/auth/login/password/admin`, params);
  return data;
};

export const loginWithOtp = async (
  params: LoginWithOtpType
): Promise<LoginWithOtpResponse> => {
  const { data } = await axios.post<LoginWithOtpResponse>(
    `/admin/auth/otp/request`,
    params
  );
  return data;
};

export const otpVerify = async (params: OtpVerifyType) => {
  const { data } = await axios.post(`/admin/auth/otp/verify`, params);
  return data;
};
export const checkHasAccount = async (params: CheckHasAccountType) => {
  const { data } = await axios.post(`/auth/check`, params);
  return data;
};

export const checkHasAccountRegister = async (
  params: CheckHasAccountPhoneType
) => {
  const { data } = await axios.post(`/auth/register/initiate`, params);
  return data;
};
export const register = async (params: RegisterType) => {
  const { data } = await axios.post(`/auth/register/complete`, params);
  return data;
};

export const refreshToken = async (
  params: RefreshTokenType
): Promise<RefreshTokenResponse> => {
  const { data } = await axios.post<RefreshTokenResponse>(
    `/admin/auth/refresh`,
    params
  );
  return data;
};
