///
import { Superpower, GoogleMapsApiService, BoundsLike, CoordPath } from '@bespunky/angular-google-maps/core';
import { DrawableOverlay } from '../../abstraction/types/abstraction';
import { GoogleMapsMarker } from '../../modules/marker/google-maps-marker';
import { GoogleMapsPolygon } from '../../modules/polygon/google-maps-polygon';
import { GoogleMapsPolyline } from '../../modules/polyline/google-maps-polyline';
import { GoogleMapsCircle } from '../../modules/circle/google-maps-circle';
import { GoogleMapsData } from '../../modules/data/google-maps-data';
import { IOverlaysSuperpower } from '../i-overlays-superpower';
import { OverlaysTracker } from './overlays-tracker';
/**
* Automates and facilitates tracking of overlays on the map and provide quick overlay creation methods.
*
* @export
* @class OverlaysSuperpower
* @extends {Superpower}
* @implements {IOverlaysSuperpower}
*/
export declare class OverlaysSuperpower extends Superpower implements IOverlaysSuperpower {
tracker: OverlaysTracker;
private api;
/**
* Creates an instance of OverlaysSuperpower.
*
* @param {OverlaysTracker} tracker The tracker following the presence of overlays on the map.
* @param {GoogleMapsApiService} api The instance of the maps api service.
*/
constructor(tracker: OverlaysTracker, api: GoogleMapsApiService);
/**
* Creates a marker with the specified properties and adds it to the map.
*
* @param {BoundsLike} position The position at which the marker should be added.
* @param {google.maps.ReadonlyMarkerOptions} [options] (Optional) Any native options to assign to the marker.
* @returns {GoogleMapsMarker} The wrapper object created for the new marker.
*/
createMarker(position: BoundsLike, options?: google.maps.ReadonlyMarkerOptions): GoogleMapsMarker;
/**
* Creates a polygon with the specified properties and adds it to the map.
*
* @param {CoordPath} path The path describing the polygon coordinates.
* @param {google.maps.PolygonOptions} [options] (Optional) Any native options to assign to the polygon.
* @returns {GoogleMapsPolygon} The wrapper object created for the new polygon.
*/
createPolygon(path: CoordPath, options?: google.maps.PolygonOptions): GoogleMapsPolygon;
/**
* Creates a polyline with the specified properties and adds it to the map.
*
* @param {Path} path The path describing the polyline coordinates.
* @param {google.maps.PolylineOptions} [options] (Optional) Any native options to assign to the polyline.
* @returns {GoogleMapsPolyline} The wrapper object created for the new polyline.
*/
createPolyline(path: CoordPath, options?: google.maps.PolylineOptions): GoogleMapsPolyline;
/**
* Creates a polygon with the specified properties and adds it to the map.
*
* @param {BoundsLike} center The center of the circle.
* @param {number} radius The radius in meters on the Earth's surface.
* @param {google.maps.CircleOptions} [options] (Optional) Any native options to assign to the circle.
* @returns {GoogleMapsCircle} The wrapper object created for the new circle.
*/
createCircle(center: BoundsLike, radius: number, options?: google.maps.CircleOptions): GoogleMapsCircle;
/**
* Creates a data layer with the specified properties and adds it to the map.
*
* @param {google.maps.Data.DataOptions} [options] (Optional) Any native options to assign to the data layer.
* @returns {GoogleMapsData} The wrapper object created for the new data layer.
*/
createDataLayer(options?: google.maps.Data.DataOptions): GoogleMapsData;
private createOverlay;
/**
* Removes the specified overlay from the map.
*
* @template TOverlay The type of overlay being removed.
* @param {TOverlay} overlay The wrapper of the overlay to remove.
*/
removeOverlay(overlay: TOverlay): void;
}