import axios from "axios";

const API_BASE_URL = process.env.NEXT_PUBLIC_SUBA_API_URL as string;

export const api = axios.create({
  baseURL: API_BASE_URL,
  headers: {
    "Content-Type": "application/json",
    Accept: "application/json",
  },
});

// Attach token globally
export function setAuthToken(token: string | null) {
  if (token) {
    api.defaults.headers.common["Authorization"] = `Bearer ${token}`;
  } else {
    delete api.defaults.headers.common["Authorization"];
  }
}

/* -------------------- AUTH -------------------- */

export const loginUser = (data: object) =>
  api.post("/auth/login", data);

export const RegsiterUser = (data: object) =>
  api.post("/auth/register", data);

/* -------------------- WALLET -------------------- */

export const fetchWalletData = () => api.get("/Payment/user-wallet-summary");

export const fetchWalletDetails = () =>
  api.post("/wallet/get-customer-wallet", {});

/* -------------------- SAVINGS -------------------- */

export const fetchSavingsData = () => api.get("/savings/earnings");

export const fetchSavingsList = () => api.get("/savings/user");

export const createSavingsPlan = (data: object) =>
  api.post("/savings/create", data);

/* -------------------- INVESTMENTS -------------------- */

export const fetchInvestmentsData = () =>
  api.get("/investments/earnings");

export const createInvestmentPlan = (data: object) =>
  api.post("/investments/create", data);

/* -------------------- LOANS -------------------- */

export const fetchLoansData = () =>
  api.get("/loan/latest-loan-application");

/* -------------------- REFERRALS -------------------- */

export const fetchReferralData = () =>
  api.get("/Payment/get-referral");

/* -------------------- PROFILE -------------------- */

export const fetchProfileData = () =>
  api.get("/settings/get-profile");

export const updateProfileData = (data: object) =>
  api.post("/settings/create-profile", data);

export const updateProfileImage = (formData: FormData) =>
  api.post("/auth/update-image", formData, {
    headers: { "Content-Type": "multipart/form-data" },
  });

export const setNewPassword = (data: object) =>
  api.post("/settings/reset-password", data);

/* -------------------- BANK -------------------- */

export const fetchBankDetails = () =>
  api.get("/settings/get-bank-account-detail");

/* -------------------- PAYOUT -------------------- */

export const withdrawToBank = (
  userId: string,
  data: { amount: number; pin: string; narration?: string }
) =>
  api.post("/payout/withdraw-to-bank-account", data, {
    params: { userId },
  });

export const fetchBankList = () =>
    api.get("/payout/get-all-banks")

export const addBankDetails = (data: object) =>
  api.post("settings/add-bank-account-detail", data);