import type { Fares, FaresResponse, FaresSearchParams, BoundingBox } from '../types/index.js';
import { HttpClient } from './http-client.js';
/**
 * Client for interacting with the BODS Fares API
 *
 * The Fares API provides access to bus fare information.
 * Data is updated every 24 hours around 06:00 GMT.
 */
export declare class FaresClient {
    private httpClient;
    constructor(httpClient: HttpClient);
    /**
     * Search for fares datasets
     *
     * @param params - Search parameters to filter fares
     * @returns Promise resolving to paginated fares results
     *
     * @example
     * ```typescript
     * // Find all fares for a specific operator
     * const fares = await client.fares.search({
     *   noc: ['SCMN'],
     *   status: 'published'
     * });
     *
     * // Search by geographic area (Liverpool area example)
     * const areaFares = await client.fares.search({
     *   boundingBox: [-2.930, 53.374, -3.085, 53.453]
     * });
     * ```
     */
    search(params?: FaresSearchParams): Promise<FaresResponse>;
    /**
     * Get a specific fares dataset by ID
     *
     * @param datasetId - The unique dataset identifier
     * @returns Promise resolving to the fares dataset
     *
     * @example
     * ```typescript
     * const fares = await client.fares.getById(86);
     * console.log(fares.operatorName, fares.numOfFareZones);
     * ```
     */
    getById(datasetId: number): Promise<Fares>;
    /**
     * Get all fares for a specific operator
     *
     * @param noc - National Operator Code(s)
     * @param additionalParams - Additional search parameters
     * @returns Promise resolving to paginated fares results
     *
     * @example
     * ```typescript
     * const operatorFares = await client.fares.getByOperator(['SCMN', 'SCGH']);
     * ```
     */
    getByOperator(noc: string | string[], additionalParams?: Omit<FaresSearchParams, 'noc'>): Promise<FaresResponse>;
    /**
     * Get fares for a specific geographic area
     *
     * @param boundingBox - Geographic bounding box [minLng, minLat, maxLng, maxLat]
     * @param additionalParams - Additional search parameters
     * @returns Promise resolving to paginated fares results
     *
     * @example
     * ```typescript
     * // Liverpool area
     * const liverpoolFares = await client.fares.getByArea(
     *   [-2.930, 53.374, -3.085, 53.453]
     * );
     *
     * // Manchester area
     * const manchesterFares = await client.fares.getByArea(
     *   [-2.3, 53.4, -2.2, 53.5]
     * );
     * ```
     */
    getByArea(boundingBox: BoundingBox, additionalParams?: Omit<FaresSearchParams, 'boundingBox'>): Promise<FaresResponse>;
    /**
     * Get published fares datasets only
     *
     * @param additionalParams - Additional search parameters
     * @returns Promise resolving to paginated fares results
     *
     * @example
     * ```typescript
     * const publishedFares = await client.fares.getPublished({
     *   limit: 100
     * });
     * ```
     */
    getPublished(additionalParams?: Omit<FaresSearchParams, 'status'>): Promise<FaresResponse>;
    /**
     * Helper method to create bounding box from center point and radius
     *
     * @param centerLat - Center latitude
     * @param centerLng - Center longitude
     * @param radiusKm - Radius in kilometers
     * @returns Bounding box coordinates
     *
     * @example
     * ```typescript
     * const bbox = client.fares.createBoundingBox(53.4808, -2.2426, 10); // Manchester, 10km radius
     * const nearbyFares = await client.fares.getByArea(bbox);
     * ```
     */
    createBoundingBox(centerLat: number, centerLng: number, radiusKm: number): BoundingBox;
}
//# sourceMappingURL=fares-client.d.ts.map