import { api } from '../api'; export interface CustomerAddress { first_name: string; last_name: string; company?: string; address_1: string; address_2?: string; city: string; state?: string; postcode: string; country: string; phone?: string; } export interface CustomerStats { total_orders: number; total_spent: number; } export interface Customer { id: number; username: string; email: string; first_name: string; last_name: string; display_name: string; registered: string; role: string; billing?: CustomerAddress; shipping?: CustomerAddress; stats?: CustomerStats; } export interface CustomerListResponse { data: Customer[]; pagination: { total: number; total_pages: number; current: number; per_page: number; }; } export interface CustomerFormData { email: string; first_name: string; last_name: string; username?: string; password?: string; billing?: Partial; shipping?: Partial; send_email?: boolean; } export interface CustomerSearchResult { id: number; name: string; email: string; } export const CustomersApi = { /** * List customers with pagination and filtering */ list: async (params?: { page?: number; per_page?: number; search?: string; role?: string; }): Promise => { return api.get('/customers', params); }, /** * Get single customer */ get: async (id: number): Promise => { return api.get(`/customers/${id}`); }, /** * Create new customer */ create: async (data: CustomerFormData): Promise => { return api.post('/customers', data); }, /** * Update customer */ update: async (id: number, data: Partial): Promise => { return api.put(`/customers/${id}`, data); }, /** * Delete customer */ delete: async (id: number): Promise => { return api.del(`/customers/${id}`); }, /** * Search customers (for autocomplete) */ search: async (query: string, limit?: number): Promise => { return api.get('/customers/search', { q: query, limit }); }, };