/// <reference types="heremaps" />
/**
 * Created by mjaric on 9/30/16.
 */
import { OnDestroy, EventEmitter } from '@angular/core';
import { HereMapsManager } from '../services/maps-manager';
import { BaseMapComponent } from './base-map-component';
import { GeoPoint, LatLng } from '../interface/lat-lng';
import { MapComponent } from './map';
export declare type DirectionsResolver = (origin: LatLng, destination: LatLng) => Promise<LatLng[]>;
/**
 * Renders directions on heremap. Please note that directive must be placed inside
 * map component, otherwise it will never be rendered.
 */
export declare class MapDirectionsDirective extends BaseMapComponent<H.map.Polyline> implements OnDestroy {
    private _mapsManager;
    protected mapComponent: MapComponent;
    route: Array<LatLng> | DirectionsResolver;
    /**
     * Origin of directions
     * @param value can be google.maps.LatLngLiteral or Coordinates  or {latitude: number, longitude: number}
     */
    origin: GeoPoint;
    /**
     * Destination of directions
     * @param value can be google.maps.LatLngLiteral or Coordinates  or {latitude: number, longitude: number}
     */
    destination: GeoPoint;
    /**
     * Destination of directions
     * @param value can be google.maps.LatLngLiteral or Coordinates  or {latitude: number, longitude: number}
     */
    intermediatePoints: GeoPoint[];
    lineWidth: number;
    strokeColor: string;
    fillColor: string;
    /**
     * This event is fired when the directions route changes.
     */
    directions_changed: EventEmitter<void>;
    /**
     * By default, the input map is centered and zoomed to the bounding box of this set of directions.
     * If this option is set to true, the viewport is left unchanged, unless the map's center and zoom were never set.
     */
    preserveViewport: boolean;
    private _origin;
    private _destination;
    private _intermediatePoints;
    private _lineWidth;
    private _strokeColor;
    private _fillColor;
    private _route;
    constructor(_mapsManager: HereMapsManager);
    hasMapComponent(): boolean;
    setMapComponent(component: MapComponent, map: H.Map, ui: H.ui.UI): void;
    ngOnDestroy(): void;
    private tryShowRoute();
    private renderRoute(route);
    private bindEvents();
}
