/**
 * Service to provide access to a
 * [Open Source Routing Machine (OSRM) backend](https://github.com/Project-OSRM/osrm-backend)
 * of version 5.8 and higher and its features.
 *
 * @param {angular.IHttpService} $http Angular http service.
 * @param {import('ngeo/options').ngeoRoutingOptions} ngeoRoutingOptions The options.
 * @class
 * @ngdoc service
 * @ngname ngeoRoutingService
 * @hidden
 */
export function RoutingService($http: angular.IHttpService, ngeoRoutingOptions: import("ngeo/options").ngeoRoutingOptions): void;
export class RoutingService {
    /**
     * Service to provide access to a
     * [Open Source Routing Machine (OSRM) backend](https://github.com/Project-OSRM/osrm-backend)
     * of version 5.8 and higher and its features.
     *
     * @param {angular.IHttpService} $http Angular http service.
     * @param {import('ngeo/options').ngeoRoutingOptions} ngeoRoutingOptions The options.
     * @class
     * @ngdoc service
     * @ngname ngeoRoutingService
     * @hidden
     */
    constructor($http: angular.IHttpService, ngeoRoutingOptions: import("ngeo/options").ngeoRoutingOptions);
    /**
     * @type {angular.IHttpService}
     */
    $http_: angular.IHttpService;
    /**
     * @type {import('ngeo/options').ngeoRoutingOptions}
     */
    routingOptions_: import("ngeo/options").ngeoRoutingOptions;
    /**
     * URL for OSRM backend API.
     * Defaults to demo backend.
     *
     * @type {string}
     */
    ngeoOsrmBackendUrl_: string;
    /**
     * Version of the protocol implemented by the service.
     * see: https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md
     *
     * @type {string}
     */
    protocolVersion_: string;
    /**
     * @typedef {Object} Config
     * @property {string} [service]
     * @property {string} [profile]
     * @property {string} [instance]
     * @property {Object<string, string|boolean>} [options]
     */
    /**
     * @typedef {Object} Routes
     * @property {Route[]} routes
     */
    /**
     * @typedef {Object} Route
     * @property {Leg[]} [legs]
     * @property {string} [geometry]
     * @property {number} distance
     * @property {number} duration
     */
    /**
     * @typedef {Object} Leg
     * @property {Step[]} steps
     */
    /**
     * @typedef {Object} Step
     * @property {string} geometry
     */
    /**
     * Route request
     *
     * @param {import('ol/coordinate').Coordinate[]} coordinates coordinates of the route (at least two!)
     * @param {?Config} config optional configuration
     * @returns {angular.IHttpPromise<Routes>} promise of the OSRM API request
     */
    getRoute(coordinates: import("ol/coordinate").Coordinate[], config: Config | null): angular.IHttpPromise<Routes>;
    /**
     * Snaps a coordinate to the street network and returns the nearest match
     *
     * @param {import('ol/coordinate').Coordinate} coordinate coordinate to query
     * @param {?Config} config optional configuration
     * @returns {angular.IHttpPromise<Object>} promise of the OSRM API request
     * @see https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#nearest-service
     */
    getNearest(coordinate: import("ol/coordinate").Coordinate, config: Config | null): angular.IHttpPromise<Object>;
}
export namespace RoutingService {
    let $inject: string[];
}
export default myModule;
export type Config = {
    service?: string;
    profile?: string;
    instance?: string;
    options?: {
        [x: string]: string | boolean;
    };
};
export type Routes = {
    routes: Route[];
};
export type Route = {
    legs?: Leg[];
    geometry?: string;
    distance: number;
    duration: number;
};
export type Leg = {
    steps: Step[];
};
export type Step = {
    geometry: string;
};
import angular from 'angular';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
