/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
import { type MapCoordinate } from "../components/types";
declare const googleMap: () => {
    maps: {
        Map: typeof google.maps.Map;
        MapTypeId: {
            readonly HYBRID: google.maps.MapTypeId.HYBRID;
            readonly ROADMAP: google.maps.MapTypeId.ROADMAP;
            readonly SATELLITE: google.maps.MapTypeId.SATELLITE;
            readonly TERRAIN: google.maps.MapTypeId.TERRAIN;
        };
        MapTypeRegistry: typeof google.maps.MapTypeRegistry;
        TrafficLayer: typeof google.maps.TrafficLayer;
        TransitLayer: typeof google.maps.TransitLayer;
        BicyclingLayer: typeof google.maps.BicyclingLayer;
        LatLng: typeof google.maps.LatLng;
        LatLngBounds: typeof google.maps.LatLngBounds;
        Point: typeof google.maps.Point;
        Size: typeof google.maps.Size;
        event: {
            addDomListener: typeof google.maps.event.addDomListener;
            addDomListenerOnce: typeof google.maps.event.addDomListenerOnce;
            addListener: typeof google.maps.event.addListener;
            addListenerOnce: typeof google.maps.event.addListenerOnce;
            clearInstanceListeners: typeof google.maps.event.clearInstanceListeners;
            clearListeners: typeof google.maps.event.clearListeners;
            removeListener: typeof google.maps.event.removeListener;
            trigger: typeof google.maps.event.trigger;
        };
        MVCObject: typeof google.maps.MVCObject;
        MVCArray: typeof google.maps.MVCArray;
        MapTypeControlStyle: {
            [x: number]: string;
            readonly DEFAULT: google.maps.MapTypeControlStyle.DEFAULT;
            readonly HORIZONTAL_BAR: google.maps.MapTypeControlStyle.HORIZONTAL_BAR;
            readonly DROPDOWN_MENU: google.maps.MapTypeControlStyle.DROPDOWN_MENU;
            readonly INSET: google.maps.MapTypeControlStyle.INSET;
            readonly INSET_LARGE: google.maps.MapTypeControlStyle.INSET_LARGE;
        };
        ScaleControlStyle: {
            [x: number]: string;
            readonly DEFAULT: google.maps.ScaleControlStyle.DEFAULT;
        };
        ZoomControlStyle: {
            [x: number]: string;
            readonly DEFAULT: google.maps.ZoomControlStyle.DEFAULT;
            readonly SMALL: google.maps.ZoomControlStyle.SMALL;
            readonly LARGE: google.maps.ZoomControlStyle.LARGE;
        };
        ControlPosition: {
            [x: number]: string;
            readonly BOTTOM_CENTER: google.maps.ControlPosition.BOTTOM_CENTER;
            readonly BOTTOM_LEFT: google.maps.ControlPosition.BOTTOM_LEFT;
            readonly BOTTOM_RIGHT: google.maps.ControlPosition.BOTTOM_RIGHT;
            readonly LEFT_BOTTOM: google.maps.ControlPosition.LEFT_BOTTOM;
            readonly LEFT_CENTER: google.maps.ControlPosition.LEFT_CENTER;
            readonly LEFT_TOP: google.maps.ControlPosition.LEFT_TOP;
            readonly RIGHT_BOTTOM: google.maps.ControlPosition.RIGHT_BOTTOM;
            readonly RIGHT_CENTER: google.maps.ControlPosition.RIGHT_CENTER;
            readonly RIGHT_TOP: google.maps.ControlPosition.RIGHT_TOP;
            readonly TOP_CENTER: google.maps.ControlPosition.TOP_CENTER;
            readonly TOP_LEFT: google.maps.ControlPosition.TOP_LEFT;
            readonly TOP_RIGHT: google.maps.ControlPosition.TOP_RIGHT;
        };
        geometry: {
            encoding: {
                decodePath: typeof google.maps.geometry.encoding.decodePath;
                encodePath: typeof google.maps.geometry.encoding.encodePath;
            };
            spherical: {
                computeArea: typeof google.maps.geometry.spherical.computeArea;
                computeDistanceBetween: typeof google.maps.geometry.spherical.computeDistanceBetween;
                computeHeading: typeof google.maps.geometry.spherical.computeHeading;
                computeLength: typeof google.maps.geometry.spherical.computeLength;
                computeOffset: typeof google.maps.geometry.spherical.computeOffset;
                computeOffsetOrigin: typeof google.maps.geometry.spherical.computeOffsetOrigin;
                computeSignedArea: typeof google.maps.geometry.spherical.computeSignedArea;
                interpolate: typeof google.maps.geometry.spherical.interpolate;
            };
            poly: {
                containsLocation: typeof google.maps.geometry.poly.containsLocation;
                isLocationOnEdge: typeof google.maps.geometry.poly.isLocationOnEdge;
            };
        };
        Marker: typeof google.maps.Marker;
        SymbolPath: {
            [x: number]: string;
            readonly BACKWARD_CLOSED_ARROW: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW;
            readonly BACKWARD_OPEN_ARROW: google.maps.SymbolPath.BACKWARD_OPEN_ARROW;
            readonly CIRCLE: google.maps.SymbolPath.CIRCLE;
            readonly FORWARD_CLOSED_ARROW: google.maps.SymbolPath.FORWARD_CLOSED_ARROW;
            readonly FORWARD_OPEN_ARROW: google.maps.SymbolPath.FORWARD_OPEN_ARROW;
        };
        Animation: {
            [x: number]: string;
            readonly BOUNCE: google.maps.Animation.BOUNCE;
            readonly DROP: google.maps.Animation.DROP;
        };
        InfoWindow: typeof google.maps.InfoWindow;
        Polyline: typeof google.maps.Polyline;
        Polygon: typeof google.maps.Polygon;
        Rectangle: typeof google.maps.Rectangle;
        Circle: typeof google.maps.Circle;
        StrokePosition: {
            [x: number]: string;
            readonly CENTER: google.maps.StrokePosition.CENTER;
            readonly INSIDE: google.maps.StrokePosition.INSIDE;
            readonly OUTSIDE: google.maps.StrokePosition.OUTSIDE;
        };
        Data: typeof google.maps.Data;
        OverlayView: typeof google.maps.OverlayView;
        MapCanvasProjection: typeof google.maps.MapCanvasProjection;
        KmlLayer: typeof google.maps.KmlLayer;
        KmlLayerStatus: {
            readonly DOCUMENT_NOT_FOUND: google.maps.KmlLayerStatus.DOCUMENT_NOT_FOUND;
            readonly DOCUMENT_TOO_LARGE: google.maps.KmlLayerStatus.DOCUMENT_TOO_LARGE;
            readonly FETCH_ERROR: google.maps.KmlLayerStatus.FETCH_ERROR;
            readonly INVALID_DOCUMENT: google.maps.KmlLayerStatus.INVALID_DOCUMENT;
            readonly INVALID_REQUEST: google.maps.KmlLayerStatus.INVALID_REQUEST;
            readonly LIMITS_EXCEEDED: google.maps.KmlLayerStatus.LIMITS_EXCEEDED;
            readonly OK: google.maps.KmlLayerStatus.OK;
            readonly TIMED_OUT: google.maps.KmlLayerStatus.TIMED_OUT;
            readonly UNKNOWN: google.maps.KmlLayerStatus.UNKNOWN;
        };
        ImageMapType: typeof google.maps.ImageMapType;
        GroundOverlay: typeof google.maps.GroundOverlay;
        StyledMapType: typeof google.maps.StyledMapType;
        drawing: {
            DrawingManager: typeof google.maps.drawing.DrawingManager;
            OverlayType: {
                readonly CIRCLE: google.maps.drawing.OverlayType.CIRCLE;
                readonly MARKER: google.maps.drawing.OverlayType.MARKER;
                readonly POLYGON: google.maps.drawing.OverlayType.POLYGON;
                readonly POLYLINE: google.maps.drawing.OverlayType.POLYLINE;
                readonly RECTANGLE: google.maps.drawing.OverlayType.RECTANGLE;
            };
        };
        visualization: {
            HeatmapLayer: typeof google.maps.visualization.HeatmapLayer;
            MapsEngineLayer: typeof google.maps.visualization.MapsEngineLayer;
            MapsEngineStatus: {
                readonly INVALID_LAYER: google.maps.visualization.MapsEngineStatus.INVALID_LAYER;
                readonly OK: google.maps.visualization.MapsEngineStatus.OK;
                readonly UNKNOWN_ERROR: google.maps.visualization.MapsEngineStatus.UNKNOWN_ERROR;
            };
            MouseEvent: typeof google.maps.visualization.MouseEvent;
            MapsEventListener: typeof google.maps.visualization.MapsEventListener;
        };
        MaxZoomService: typeof google.maps.MaxZoomService;
        MaxZoomStatus: {
            readonly ERROR: google.maps.MaxZoomStatus.ERROR;
            readonly OK: google.maps.MaxZoomStatus.OK;
        };
        StreetViewPanorama: typeof google.maps.StreetViewPanorama;
        StreetViewCoverageLayer: typeof google.maps.StreetViewCoverageLayer;
        StreetViewService: typeof google.maps.StreetViewService;
        StreetViewStatus: {
            readonly OK: google.maps.StreetViewStatus.OK;
            readonly UNKNOWN_ERROR: google.maps.StreetViewStatus.UNKNOWN_ERROR;
            readonly ZERO_RESULTS: google.maps.StreetViewStatus.ZERO_RESULTS;
        };
        StreetViewPreference: {
            readonly BEST: google.maps.StreetViewPreference.BEST;
            readonly NEAREST: google.maps.StreetViewPreference.NEAREST;
        };
        StreetViewSource: {
            readonly DEFAULT: google.maps.StreetViewSource.DEFAULT;
            readonly OUTDOOR: google.maps.StreetViewSource.OUTDOOR;
        };
        places: {
            Autocomplete: typeof google.maps.places.Autocomplete;
            SearchBox: typeof google.maps.places.SearchBox;
            PlacesService: typeof google.maps.places.PlacesService;
            RankBy: {
                [x: number]: string;
                readonly PROMINENCE: google.maps.places.RankBy.PROMINENCE;
                readonly DISTANCE: google.maps.places.RankBy.DISTANCE;
            };
            PlacesServiceStatus: {
                readonly INVALID_REQUEST: google.maps.places.PlacesServiceStatus.INVALID_REQUEST;
                readonly NOT_FOUND: google.maps.places.PlacesServiceStatus.NOT_FOUND;
                readonly OK: google.maps.places.PlacesServiceStatus.OK;
                readonly OVER_QUERY_LIMIT: google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT;
                readonly REQUEST_DENIED: google.maps.places.PlacesServiceStatus.REQUEST_DENIED;
                readonly UNKNOWN_ERROR: google.maps.places.PlacesServiceStatus.UNKNOWN_ERROR;
                readonly ZERO_RESULTS: google.maps.places.PlacesServiceStatus.ZERO_RESULTS;
            };
            AutocompleteService: typeof google.maps.places.AutocompleteService;
            AutocompleteSessionToken: typeof google.maps.places.AutocompleteSessionToken;
        };
        Geocoder: typeof google.maps.Geocoder;
        GeocoderStatus: {
            readonly ERROR: google.maps.GeocoderStatus.ERROR;
            readonly INVALID_REQUEST: google.maps.GeocoderStatus.INVALID_REQUEST;
            readonly OK: google.maps.GeocoderStatus.OK;
            readonly OVER_QUERY_LIMIT: google.maps.GeocoderStatus.OVER_QUERY_LIMIT;
            readonly REQUEST_DENIED: google.maps.GeocoderStatus.REQUEST_DENIED;
            readonly UNKNOWN_ERROR: google.maps.GeocoderStatus.UNKNOWN_ERROR;
            readonly ZERO_RESULTS: google.maps.GeocoderStatus.ZERO_RESULTS;
        };
        GeocoderLocationType: {
            readonly APPROXIMATE: google.maps.GeocoderLocationType.APPROXIMATE;
            readonly GEOMETRIC_CENTER: google.maps.GeocoderLocationType.GEOMETRIC_CENTER;
            readonly RANGE_INTERPOLATED: google.maps.GeocoderLocationType.RANGE_INTERPOLATED;
            readonly ROOFTOP: google.maps.GeocoderLocationType.ROOFTOP;
        };
        DirectionsService: typeof google.maps.DirectionsService;
        DirectionsStatus: {
            readonly INVALID_REQUEST: google.maps.DirectionsStatus.INVALID_REQUEST;
            readonly MAX_WAYPOINTS_EXCEEDED: google.maps.DirectionsStatus.MAX_WAYPOINTS_EXCEEDED;
            readonly NOT_FOUND: google.maps.DirectionsStatus.NOT_FOUND;
            readonly OK: google.maps.DirectionsStatus.OK;
            readonly OVER_QUERY_LIMIT: google.maps.DirectionsStatus.OVER_QUERY_LIMIT;
            readonly REQUEST_DENIED: google.maps.DirectionsStatus.REQUEST_DENIED;
            readonly UNKNOWN_ERROR: google.maps.DirectionsStatus.UNKNOWN_ERROR;
            readonly ZERO_RESULTS: google.maps.DirectionsStatus.ZERO_RESULTS;
        };
        DirectionsRenderer: typeof google.maps.DirectionsRenderer;
        TravelMode: {
            readonly BICYCLING: google.maps.TravelMode.BICYCLING;
            readonly DRIVING: google.maps.TravelMode.DRIVING;
            readonly TRANSIT: google.maps.TravelMode.TRANSIT;
            readonly TWO_WHEELER: google.maps.TravelMode.TWO_WHEELER;
            readonly WALKING: google.maps.TravelMode.WALKING;
        };
        TrafficModel: {
            readonly BEST_GUESS: google.maps.TrafficModel.BEST_GUESS;
            readonly OPTIMISTIC: google.maps.TrafficModel.OPTIMISTIC;
            readonly PESSIMISTIC: google.maps.TrafficModel.PESSIMISTIC;
        };
        TransitMode: {
            readonly BUS: google.maps.TransitMode.BUS;
            readonly RAIL: google.maps.TransitMode.RAIL;
            readonly SUBWAY: google.maps.TransitMode.SUBWAY;
            readonly TRAIN: google.maps.TransitMode.TRAIN;
            readonly TRAM: google.maps.TransitMode.TRAM;
        };
        TransitRoutePreference: {
            readonly FEWER_TRANSFERS: google.maps.TransitRoutePreference.FEWER_TRANSFERS;
            readonly LESS_WALKING: google.maps.TransitRoutePreference.LESS_WALKING;
        };
        VehicleType: {
            [x: number]: string;
            readonly BUS: google.maps.VehicleType.BUS;
            readonly CABLE_CAR: google.maps.VehicleType.CABLE_CAR;
            readonly COMMUTER_TRAIN: google.maps.VehicleType.COMMUTER_TRAIN;
            readonly FERRY: google.maps.VehicleType.FERRY;
            readonly FUNICULAR: google.maps.VehicleType.FUNICULAR;
            readonly GONDOLA_LIFT: google.maps.VehicleType.GONDOLA_LIFT;
            readonly HEAVY_RAIL: google.maps.VehicleType.HEAVY_RAIL;
            readonly HIGH_SPEED_TRAIN: google.maps.VehicleType.HIGH_SPEED_TRAIN;
            readonly INTERCITY_BUS: google.maps.VehicleType.INTERCITY_BUS;
            readonly METRO_RAIL: google.maps.VehicleType.METRO_RAIL;
            readonly MONORAIL: google.maps.VehicleType.MONORAIL;
            readonly OTHER: google.maps.VehicleType.OTHER;
            readonly RAIL: google.maps.VehicleType.RAIL;
            readonly SHARE_TAXI: google.maps.VehicleType.SHARE_TAXI;
            readonly SUBWAY: google.maps.VehicleType.SUBWAY;
            readonly TRAM: google.maps.VehicleType.TRAM;
            readonly TROLLEYBUS: google.maps.VehicleType.TROLLEYBUS;
        };
        UnitSystem: {
            [x: number]: string;
            readonly METRIC: google.maps.UnitSystem.METRIC;
            readonly IMPERIAL: google.maps.UnitSystem.IMPERIAL;
        };
        DistanceMatrixService: typeof google.maps.DistanceMatrixService;
        DistanceMatrixStatus: {
            readonly INVALID_REQUEST: google.maps.DistanceMatrixStatus.INVALID_REQUEST;
            readonly MAX_DIMENSIONS_EXCEEDED: google.maps.DistanceMatrixStatus.MAX_DIMENSIONS_EXCEEDED;
            readonly MAX_ELEMENTS_EXCEEDED: google.maps.DistanceMatrixStatus.MAX_ELEMENTS_EXCEEDED;
            readonly OK: google.maps.DistanceMatrixStatus.OK;
            readonly OVER_QUERY_LIMIT: google.maps.DistanceMatrixStatus.OVER_QUERY_LIMIT;
            readonly REQUEST_DENIED: google.maps.DistanceMatrixStatus.REQUEST_DENIED;
            readonly UNKNOWN_ERROR: google.maps.DistanceMatrixStatus.UNKNOWN_ERROR;
        };
        DistanceMatrixElementStatus: {
            readonly NOT_FOUND: google.maps.DistanceMatrixElementStatus.NOT_FOUND;
            readonly OK: google.maps.DistanceMatrixElementStatus.OK;
            readonly ZERO_RESULTS: google.maps.DistanceMatrixElementStatus.ZERO_RESULTS;
        };
        ElevationService: typeof google.maps.ElevationService;
        ElevationStatus: {
            readonly INVALID_REQUEST: google.maps.ElevationStatus.INVALID_REQUEST;
            readonly OK: google.maps.ElevationStatus.OK;
            readonly OVER_QUERY_LIMIT: google.maps.ElevationStatus.OVER_QUERY_LIMIT;
            readonly REQUEST_DENIED: google.maps.ElevationStatus.REQUEST_DENIED;
            readonly UNKNOWN_ERROR: google.maps.ElevationStatus.UNKNOWN_ERROR;
        };
        readonly version: string;
        SaveWidget: typeof google.maps.SaveWidget;
        FusionTablesLayer: typeof google.maps.FusionTablesLayer;
        adsense: {
            AdUnit: typeof google.maps.adsense.AdUnit;
            AdFormat: {
                readonly BANNER: google.maps.adsense.AdFormat.BANNER;
                readonly BUTTON: google.maps.adsense.AdFormat.BUTTON;
                readonly HALF_BANNER: google.maps.adsense.AdFormat.HALF_BANNER;
                readonly LARGE_HORIZONTAL_LINK_UNIT: google.maps.adsense.AdFormat.LARGE_HORIZONTAL_LINK_UNIT;
                readonly LARGE_RECTANGLE: google.maps.adsense.AdFormat.LARGE_RECTANGLE;
                readonly LARGE_VERTICAL_LINK_UNIT: google.maps.adsense.AdFormat.LARGE_VERTICAL_LINK_UNIT;
                readonly LEADERBOARD: google.maps.adsense.AdFormat.LEADERBOARD;
                readonly MEDIUM_RECTANGLE: google.maps.adsense.AdFormat.MEDIUM_RECTANGLE;
                readonly MEDIUM_VERTICAL_LINK_UNIT: google.maps.adsense.AdFormat.MEDIUM_VERTICAL_LINK_UNIT;
                readonly SKYSCRAPER: google.maps.adsense.AdFormat.SKYSCRAPER;
                readonly SMALL_HORIZONTAL_LINK_UNIT: google.maps.adsense.AdFormat.SMALL_HORIZONTAL_LINK_UNIT;
                readonly SMALL_RECTANGLE: google.maps.adsense.AdFormat.SMALL_RECTANGLE;
                readonly SMALL_SQUARE: google.maps.adsense.AdFormat.SMALL_SQUARE;
                readonly SMALL_VERTICAL_LINK_UNIT: google.maps.adsense.AdFormat.SMALL_VERTICAL_LINK_UNIT;
                readonly SQUARE: google.maps.adsense.AdFormat.SQUARE;
                readonly VERTICAL_BANNER: google.maps.adsense.AdFormat.VERTICAL_BANNER;
                readonly WIDE_SKYSCRAPER: google.maps.adsense.AdFormat.WIDE_SKYSCRAPER;
                readonly X_LARGE_VERTICAL_LINK_UNIT: google.maps.adsense.AdFormat.X_LARGE_VERTICAL_LINK_UNIT;
            };
        };
    };
};
export declare function setGoogleMap(map: typeof google): void;
declare const coordinates: Readonly<{
    jb: {
        lat: number;
        lng: number;
    };
}>;
declare function coordinateToArray(v: {
    lat: number;
    lng: number;
}): number[];
declare function arrayToCoordinate(arr: number[]): {
    lat: number;
    lng: number;
};
declare function generateAreaPaths({ center, radius }: {
    radius: number;
    center: {
        lng: number;
        lat: number;
    };
}): {
    lat: number;
    lng: number;
}[];
declare function pathToPolygon(path: MapCoordinate[]): number[][];
declare function polygonToPath(polygon: number[][]): MapCoordinate[];
declare function getPolygonCenter(polygon: number[][]): MapCoordinate | undefined;
export { googleMap, coordinates, coordinateToArray, arrayToCoordinate, generateAreaPaths, pathToPolygon, polygonToPath, getPolygonCenter };
