import axios, { AxiosInstance } from 'axios'; import type { ApiClientConfig, ApiClient } from './types'; import { authInterceptor } from './interceptors/auth.interceptor'; import { errorInterceptor } from './interceptors/error.interceptor'; export function createApiClient(config: ApiClientConfig): ApiClient { const instance: AxiosInstance = axios.create({ baseURL: config.baseURL, timeout: config.timeout ?? 30000, headers: { 'Content-Type': 'application/json', }, }); // Add auth interceptor if (config.getAccessToken) { authInterceptor(instance, config.getAccessToken); } // Add error interceptor errorInterceptor(instance, config.onUnauthorized, config.onError); return instance as ApiClient; } export type { ApiClient };