import type { BoundingBox } from '../types/index.js';
/**
 * Utility functions for working with BODS data
 */
/**
 * Create a bounding box from a center point and radius
 *
 * @param centerLat - Center latitude
 * @param centerLng - Center longitude
 * @param radiusKm - Radius in kilometers
 * @returns Bounding box coordinates [minLng, minLat, maxLng, maxLat]
 *
 * @example
 * ```typescript
 * import { createBoundingBox } from 'bods-js/utils';
 *
 * // Manchester city center, 10km radius
 * const bbox = createBoundingBox(53.4808, -2.2426, 10);
 * const vehicles = await client.avl.getByArea(bbox);
 * ```
 */
export declare function createBoundingBox(centerLat: number, centerLng: number, radiusKm: number): BoundingBox;
/**
 * Check if a point is within a bounding box
 *
 * @param lat - Point latitude
 * @param lng - Point longitude
 * @param boundingBox - Bounding box to check against
 * @returns True if point is within the bounding box
 *
 * @example
 * ```typescript
 * import { isPointInBoundingBox } from 'bods-js/utils';
 *
 * const manchester = createBoundingBox(53.4808, -2.2426, 10);
 * const isInManchester = isPointInBoundingBox(53.4808, -2.2426, manchester); // true
 * ```
 */
export declare function isPointInBoundingBox(lat: number, lng: number, boundingBox: BoundingBox): boolean;
/**
 * Calculate distance between two points using Haversine formula
 *
 * @param lat1 - First point latitude
 * @param lng1 - First point longitude
 * @param lat2 - Second point latitude
 * @param lng2 - Second point longitude
 * @returns Distance in kilometers
 *
 * @example
 * ```typescript
 * import { calculateDistance } from 'bods-js/utils';
 *
 * const distance = calculateDistance(53.4808, -2.2426, 51.5074, -0.1278); // Manchester to London
 * console.log(`Distance: ${distance.toFixed(2)}km`);
 * ```
 */
export declare function calculateDistance(lat1: number, lng1: number, lat2: number, lng2: number): number;
/**
 * Format a date for BODS API queries
 *
 * @param date - Date to format
 * @returns ISO string formatted for BODS API
 *
 * @example
 * ```typescript
 * import { formatDateForAPI } from 'bods-js/utils';
 *
 * const formatted = formatDateForAPI(new Date());
 * const timetables = await client.timetables.search({
 *   modifiedDate: formatted
 * });
 * ```
 */
export declare function formatDateForAPI(date: Date): string;
/**
 * Parse an ISO date string to Date object
 *
 * @param dateString - ISO date string
 * @returns Date object
 *
 * @example
 * ```typescript
 * import { parseDateFromAPI } from 'bods-js/utils';
 *
 * const date = parseDateFromAPI('2023-01-01T12:45:00+00:00');
 * ```
 */
export declare function parseDateFromAPI(dateString: string): Date;
/**
 * Validate National Operator Code format
 *
 * @param noc - National Operator Code to validate
 * @returns True if NOC format appears valid
 *
 * @example
 * ```typescript
 * import { isValidNOC } from 'bods-js/utils';
 *
 * console.log(isValidNOC('SCMN')); // true
 * console.log(isValidNOC('invalid')); // false
 * ```
 */
export declare function isValidNOC(noc: string): boolean;
/**
 * Validate API key format
 *
 * @param apiKey - API key to validate
 * @returns True if API key format appears valid
 *
 * @example
 * ```typescript
 * import { isValidAPIKey } from 'bods-js/utils';
 *
 * const isValid = isValidAPIKey('your-api-key');
 * ```
 */
export declare function isValidAPIKey(apiKey: string): boolean;
/**
 * Get common UK city bounding boxes
 */
export declare const UK_CITIES: {
    readonly LONDON: BoundingBox;
    readonly MANCHESTER: BoundingBox;
    readonly BIRMINGHAM: BoundingBox;
    readonly LEEDS: BoundingBox;
    readonly LIVERPOOL: BoundingBox;
    readonly BRISTOL: BoundingBox;
    readonly SHEFFIELD: BoundingBox;
    readonly LEICESTER: BoundingBox;
    readonly COVENTRY: BoundingBox;
    readonly BRADFORD: BoundingBox;
};
//# sourceMappingURL=index.d.ts.map