import type { Quote } from '../../../types'; /** * Filter quote dates to those still valid (no cutoff or cutoff in the future). */ export function getQuotesValidCollectionDates(quote: Quote) { return quote.dates.filter( (date) => !date.cutoff || new Date(date.cutoff!) > new Date(), ); } /** * Whether the quote is a drop-off (parcelshop/locker) service. */ export function isQuoteDropoff(quote: Quote): boolean { const tags = Array.isArray(quote?.tags) ? quote.tags : []; return tags.includes('dropoff') || tags.includes('locker'); } /** * Whether the quote is a DDP (Delivery Duty Paid) service. */ export function isQuoteDDP(quote: Quote): boolean { const tags = Array.isArray(quote?.tags) ? quote.tags : []; return tags.includes('ddp'); } /** * Convert meters to miles string (assumes API distance is in meters). */ export function metersToMiles(meters: number): string { const miles = meters / 1609.344; return miles < 1 ? `${Math.round(miles * 10) / 10} miles` : `${Math.round(miles)} miles`; }