import type { LibreRoutingDataProvider, LibreRoutingDataResponse, RouteSummary } from '..';
import { LngLatPosition } from '../../libre-routing';
export declare type SelectRouteStrategy = 'fastest' | 'shortest' | 'cheapest' | 'none';
export declare type RouteExcludeNoticeDefinitions = {
    [key in 'critical' | 'info']?: string[] | 'all';
};
export declare type TurnByTurnAction = {
    action: 'arrive' | 'turn' | 'depart';
    duration: number;
    length: number;
    position: {
        lat: number;
        lng: number;
    };
    offset: number;
};
export declare type RoutePath = LngLatPosition[];
export declare type HereRouteSummary = RouteSummary & {
    turnByTurnActions: TurnByTurnAction[];
    shapePath: RoutePath;
    rawRoute: any;
};
export declare type HereRoutingData = LibreRoutingDataResponse & {
    routes: HereRouteSummary[];
};
declare type Options = {
    worker?: boolean;
    apiKey: string;
    selectRouteStrategy?: SelectRouteStrategy;
    baseUrl?: string;
    spans?: string[];
    return?: string[];
    currency?: string;
    transportMode?: string;
    queryParams?: Record<string, any>;
    requestParams?: RequestInit;
    routeExcludeNotice?: RouteExcludeNoticeDefinitions;
    shapePolylinePrecision?: number;
    generateRouteName?: boolean;
};
export declare class HereProvider implements LibreRoutingDataProvider {
    private worker?;
    private executorAPI;
    private options;
    constructor(options: Options);
    destroy(): void;
    request(waypoints: any, opts: any): Promise<HereRoutingData>;
    abortAllRequests(): void;
    setOption<T extends keyof Options>(optionKey: T, value: Options[T]): void;
    hasPendingRequests(): Promise<boolean>;
    private buildUrl;
    private serializeWaypoints;
}
export {};
