import { NgZone } from '@angular/core';
import { Observable } from 'rxjs';
import { NgMapsPolyline } from '../../directives/polyline';
import { GeoPoint } from '../../interface/geo-point';
import { MapsApiWrapper } from '../maps-api-wrapper';
import * as i0 from "@angular/core";
export declare abstract class PolylineManager<T = any> {
    protected _mapsWrapper: MapsApiWrapper;
    protected _zone: NgZone;
    protected _polylines: Map<NgMapsPolyline, Promise<T>>;
    constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone);
    protected _convertPoints(line: NgMapsPolyline): Array<GeoPoint>;
    abstract addPolyline(line: NgMapsPolyline): Promise<void> | void;
    abstract updatePolylinePoints(line: NgMapsPolyline): Promise<void>;
    abstract setPolylineOptions(line: NgMapsPolyline, options: {
        [propName: string]: any;
    }): Promise<void>;
    abstract deletePolyline(line: NgMapsPolyline): Promise<void>;
    abstract createEventObservable<E>(eventName: string, line: NgMapsPolyline): Observable<E>;
    static ɵfac: i0.ɵɵFactoryDeclaration<PolylineManager<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PolylineManager<any>>;
}
