import { apiClient } from './api-client'; // ─── Types ────────────────────────────────────────────── export interface ValuationRequest { propertyType: string; area: number; district: string; city: string; bedrooms?: number; bathrooms?: number; floors?: number; frontage?: number; roadWidth?: number; yearBuilt?: number; hasLegalPaper?: boolean; } export interface ValuationComparable { id: string; title: string; address: string; district: string; priceVND: string; areaM2: number; pricePerM2: number; similarity: number; latitude?: number; longitude?: number; } export interface PriceDriver { feature: string; impact: number; direction: 'positive' | 'negative'; } export interface ValuationResult { id: string; estimatedPriceVND: number; confidence: number; pricePerM2: number; priceRangeLow: number; priceRangeHigh: number; comparables: ValuationComparable[]; priceDrivers: PriceDriver[]; modelVersion: string; createdAt: string; } export interface ValuationHistoryItem { id: string; propertyType: string; district: string; city: string; area: number; estimatedPriceVND: number; confidence: number; createdAt: string; } export interface ValuationHistoryResponse { data: ValuationHistoryItem[]; total: number; page: number; limit: number; } // ─── API ──────────────────────────────────────────────── export const valuationApi = { predict: (data: ValuationRequest) => apiClient.post('/valuation/predict', data), getHistory: (page = 1, limit = 10) => apiClient.get( `/valuation/history?page=${page}&limit=${limit}`, ), getById: (id: string) => apiClient.get(`/valuation/${id}`), predictForListing: (listingId: string) => apiClient.post(`/valuation/predict-listing/${listingId}`), };