import axios, { AxiosInstance } from 'axios' import type { APIResponse } from '../types/api' class APIClient { private client: AxiosInstance constructor() { this.client = axios.create({ baseURL: '/admin/api/v1', headers: { 'Content-Type': 'application/json', }, }) // Request interceptor for auth this.client.interceptors.request.use((config) => { const token = localStorage.getItem('auth_token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }) // Response interceptor for error handling this.client.interceptors.response.use( (response) => response, (error) => { console.error('API Error:', error) return Promise.reject(error) } ) } async get(url: string): Promise { const response = await this.client.get>(url) if (response.data.success && response.data.data) { return response.data.data } throw new Error(response.data.error?.message || 'Unknown error') } async post(url: string, data: any): Promise { const response = await this.client.post>(url, data) if (response.data.success && response.data.data) { return response.data.data } throw new Error(response.data.error?.message || 'Unknown error') } } export const apiClient = new APIClient()