/** * Rates API * * Rate search API calls */ import { apiClient } from './client'; export interface RateSearchRequest { origin: string; destination: string; containerType: string; mode: 'FCL' | 'LCL'; departureDate: string; weight?: number; volume?: number; hazmat: boolean; imoClass?: string; } export interface RateQuote { id: string; carrier: { name: string; logo?: string; }; origin: { code: string; name: string; }; destination: { code: string; name: string; }; price: { amount: number; currency: string; }; surcharges: Array<{ type: string; amount: number; }>; transitDays: number; etd: string; eta: string; route: Array<{ port: string; arrival?: string; departure?: string; }>; availability: number; frequency: string; vesselType?: string; co2Kg?: number; } export interface Port { code: string; name: string; country: string; } export const ratesApi = { /** * Search shipping rates */ async search(data: RateSearchRequest): Promise { return apiClient.post('/api/v1/rates/search', data); }, /** * Autocomplete ports */ async searchPorts(query: string): Promise { return apiClient.get(`/api/v1/ports/autocomplete?q=${query}`); }, };