import axios, { AxiosInstance } from "axios"; let apiClient: AxiosInstance | null = null; export function initApi(baseUrl: string, getToken?: () => string | null): AxiosInstance { if (apiClient && apiClient.defaults.baseURL === baseUrl) { return apiClient; } apiClient = axios.create({ baseURL: baseUrl, headers: { "Content-Type": "application/json" }, }); apiClient.interceptors.request.use((config) => { const token = getToken?.(); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }); return apiClient; } export function getApi(): AxiosInstance { if (!apiClient) { throw new Error("API client not initialized. Make sure AppProvider is mounted."); } return apiClient; }