import type { NobjcObject } from "objc-js";
import type { _NSView } from "../AppKit/NSView.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSSet } from "../Foundation/NSSet.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _MKAnnotation } from "./MKAnnotation.js";
import type { _MKAnnotationView } from "./MKAnnotationView.js";
import type { _MKMapCamera } from "./MKMapCamera.js";
import type { _MKMapCameraBoundary } from "./MKMapCameraBoundary.js";
import type { _MKMapCameraZoomRange } from "./MKMapCameraZoomRange.js";
import type { _MKMapConfiguration } from "./MKMapConfiguration.js";
import type { _MKMapViewDelegate } from "./MKMapViewDelegate.js";
import type { _MKOverlay } from "./MKOverlay.js";
import type { _MKOverlayRenderer } from "./MKOverlayRenderer.js";
import type { _MKPointOfInterestFilter } from "./MKPointOfInterestFilter.js";
import type { _MKUserLocation } from "./MKUserLocation.js";
import type { CGPoint } from "../structs/CGPoint.js";
import type { CGRect } from "../structs/CGRect.js";
import type { CLLocationCoordinate2D } from "../structs/CLLocationCoordinate2D.js";
import type { MKCoordinateRegion } from "../structs/MKCoordinateRegion.js";
import type { MKMapRect } from "../structs/MKMapRect.js";
import type { NSEdgeInsets } from "../structs/NSEdgeInsets.js";
import type { MKFeatureVisibility } from "./MKFeatureVisibility.js";
import type { MKMapType } from "./MKMapType.js";
import type { MKOverlayLevel } from "./MKOverlayLevel.js";
import type { MKUserTrackingMode } from "./MKUserTrackingMode.js";
export declare class _MKMapView extends _NSView {
    static alloc(): _MKMapView;
    static new(): _MKMapView;
    init(): _MKMapView;
    setRegion$animated$(region: MKCoordinateRegion, animated: boolean): void;
    setCenterCoordinate$animated$(coordinate: CLLocationCoordinate2D, animated: boolean): void;
    /**
     * Returns a region of the aspect ratio of the map view that contains the given region, with the same center point.
     */
    regionThatFits$(region: MKCoordinateRegion): MKCoordinateRegion;
    setVisibleMapRect$animated$(mapRect: MKMapRect, animate: boolean): void;
    /** Returns an MKMapRect modified to fit the aspect ratio of the map. */
    mapRectThatFits$(mapRect: MKMapRect): MKMapRect;
    setVisibleMapRect$edgePadding$animated$(mapRect: MKMapRect, insets: NSEdgeInsets, animate: boolean): void;
    mapRectThatFits$edgePadding$(mapRect: MKMapRect, insets: NSEdgeInsets): MKMapRect;
    setCamera$animated$(camera: _MKMapCamera, animated: boolean): void;
    setCameraZoomRange$animated$(cameraZoomRange: _MKMapCameraZoomRange | null, animated: boolean): void;
    setCameraBoundary$animated$(cameraBoundary: _MKMapCameraBoundary | null, animated: boolean): void;
    convertCoordinate$toPointToView$(coordinate: CLLocationCoordinate2D, view: _NSView | null): CGPoint;
    convertPoint$toCoordinateFromView$(point: CGPoint, view: _NSView | null): CLLocationCoordinate2D;
    convertRegion$toRectToView$(region: MKCoordinateRegion, view: _NSView | null): CGRect;
    convertRect$toRegionFromView$(rect: CGRect, view: _NSView | null): MKCoordinateRegion;
    setUserTrackingMode$animated$(mode: MKUserTrackingMode, animated: boolean): void;
    /**
     * Annotations are models used to annotate coordinates on the map. Implement mapView:viewForAnnotation: on MKMapViewDelegate to return the annotation view for each annotation.
     */
    addAnnotation$(annotation: _MKAnnotation): void;
    addAnnotations$(annotations: _NSArray): void;
    removeAnnotation$(annotation: _MKAnnotation): void;
    removeAnnotations$(annotations: _NSArray): void;
    annotationsInMapRect$(mapRect: MKMapRect): _NSSet;
    /**
     * Currently displayed view for an annotation; returns nil if the view for the annotation isn't being displayed.
     */
    viewForAnnotation$(annotation: _MKAnnotation): _MKAnnotationView | null;
    /**
     * Used by the delegate to acquire a reusable annotation view, or create a new view for registered class, in lieu of allocating a new one.
     */
    dequeueReusableAnnotationViewWithIdentifier$(identifier: _NSString): _MKAnnotationView | null;
    /**
     * Used by the delegate to acquire a reusable annotation view, or create a new view for registered class, in lieu of allocating a new one. Throws an exception if view could not be aquired.
     */
    dequeueReusableAnnotationViewWithIdentifier$forAnnotation$(identifier: _NSString, annotation: _MKAnnotation): _MKAnnotationView;
    /**
     * Register a MKAnnotationView subclass to be instantiated when dequeueReusableAnnotationViewWithIdentifier: does not have a view to reuse.
     */
    registerClass$forAnnotationViewWithReuseIdentifier$(viewClass: NobjcObject | null, identifier: _NSString): void;
    /**
     * Select or deselect a given annotation. Asks the delegate for the corresponding annotation view if necessary.
     */
    selectAnnotation$animated$(annotation: _MKAnnotation, animated: boolean): void;
    deselectAnnotation$animated$(annotation: _MKAnnotation | null, animated: boolean): void;
    /**
     * Position the map such that the provided array of annotations are all visible to the fullest extent possible.
     */
    showAnnotations$animated$(annotations: _NSArray, animated: boolean): void;
    /**
     * Overlays are models used to represent areas to be drawn on top of the map. This is in contrast to annotations, which represent points on the map. Implement -mapView:rendererForOverlay: on MKMapViewDelegate to return the renderer for each overlay.
     */
    addOverlay$level$(overlay: _MKOverlay, level: MKOverlayLevel): void;
    addOverlays$level$(overlays: _NSArray, level: MKOverlayLevel): void;
    removeOverlay$(overlay: _MKOverlay): void;
    removeOverlays$(overlays: _NSArray): void;
    insertOverlay$atIndex$level$(overlay: _MKOverlay, index: number, level: MKOverlayLevel): void;
    insertOverlay$aboveOverlay$(overlay: _MKOverlay, sibling: _MKOverlay): void;
    insertOverlay$belowOverlay$(overlay: _MKOverlay, sibling: _MKOverlay): void;
    exchangeOverlay$withOverlay$(overlay1: _MKOverlay, overlay2: _MKOverlay): void;
    overlaysInLevel$(level: MKOverlayLevel): _NSArray;
    /** Current renderer for overlay; returns nil if the overlay is not shown. */
    rendererForOverlay$(overlay: _MKOverlay): _MKOverlayRenderer | null;
    /**
     * These methods operate implicitly on overlays in MKOverlayLevelAboveRoads and may be deprecated in a future release in favor of the methods that specify the level.
     */
    addOverlay$(overlay: _MKOverlay): void;
    addOverlays$(overlays: _NSArray): void;
    insertOverlay$atIndex$(overlay: _MKOverlay, index: number): void;
    exchangeOverlayAtIndex$withOverlayAtIndex$(index1: number, index2: number): void;
    /** @deprecated Use respective MKMapConfiguration */
    delegate(): _MKMapViewDelegate | null;
    setDelegate$(value: _MKMapViewDelegate | null): void;
    /**
     * Changing the map type or region can cause the map to start loading map content. The loading delegate methods will be called as map content is loaded.
     * @deprecated Use respective MKMapConfiguration
     */
    mapType(): MKMapType;
    setMapType$(value: MKMapType): void;
    preferredConfiguration(): _MKMapConfiguration;
    setPreferredConfiguration$(value: _MKMapConfiguration): void;
    /**
     * Region is the coordinate and span of the map. Region may be modified to fit the aspect ratio of the view using regionThatFits:.
     */
    region(): MKCoordinateRegion;
    setRegion$(value: MKCoordinateRegion): void;
    /**
     * centerCoordinate allows the coordinate of the region to be changed without changing the zoom level.
     */
    centerCoordinate(): CLLocationCoordinate2D;
    setCenterCoordinate$(value: CLLocationCoordinate2D): void;
    /** Access the visible region of the map in projected coordinates. */
    visibleMapRect(): MKMapRect;
    setVisibleMapRect$(value: MKMapRect): void;
    camera(): _MKMapCamera;
    setCamera$(value: _MKMapCamera): void;
    cameraZoomRange(): _MKMapCameraZoomRange;
    setCameraZoomRange$(value: _MKMapCameraZoomRange): void;
    cameraBoundary(): _MKMapCameraBoundary;
    setCameraBoundary$(value: _MKMapCameraBoundary): void;
    /**
     * Control the types of user interaction available Zoom and scroll are enabled by default.
     */
    zoomEnabled(): boolean;
    setZoomEnabled$(value: boolean): void;
    scrollEnabled(): boolean;
    setScrollEnabled$(value: boolean): void;
    /** Rotate and pitch are enabled by default on Mac OS X and on iOS 7.0 and later. */
    rotateEnabled(): boolean;
    setRotateEnabled$(value: boolean): void;
    pitchEnabled(): boolean;
    setPitchEnabled$(value: boolean): void;
    showsUserTrackingButton(): boolean;
    setShowsUserTrackingButton$(value: boolean): void;
    pitchButtonVisibility(): MKFeatureVisibility;
    setPitchButtonVisibility$(value: MKFeatureVisibility): void;
    /** @deprecated Use pointOfInterestFilter on respective MKMapConfiguration */
    showsPitchControl(): boolean;
    setShowsPitchControl$(value: boolean): void;
    /** @deprecated Use pointOfInterestFilter on respective MKMapConfiguration */
    showsZoomControls(): boolean;
    setShowsZoomControls$(value: boolean): void;
    /** @deprecated Use pointOfInterestFilter on respective MKMapConfiguration */
    showsCompass(): boolean;
    setShowsCompass$(value: boolean): void;
    /** @deprecated Use pointOfInterestFilter on respective MKMapConfiguration */
    showsScale(): boolean;
    setShowsScale$(value: boolean): void;
    /** @deprecated Use pointOfInterestFilter on respective MKMapConfiguration */
    pointOfInterestFilter(): _MKPointOfInterestFilter;
    setPointOfInterestFilter$(value: _MKPointOfInterestFilter): void;
    /** @deprecated Use pointOfInterestFilter */
    showsPointsOfInterest(): boolean;
    setShowsPointsOfInterest$(value: boolean): void;
    /**
     * Affects MKMapTypeStandard
     * @deprecated None
     */
    showsBuildings(): boolean;
    setShowsBuildings$(value: boolean): void;
    /**
     * Affects MKMapTypeStandard and MKMapTypeHybrid
     * @deprecated Use showsTraffic on respective MKMapConfiguration
     */
    showsTraffic(): boolean;
    setShowsTraffic$(value: boolean): void;
    /**
     * Set to YES to add the user location annotation to the map and start updating its location
     */
    showsUserLocation(): boolean;
    setShowsUserLocation$(value: boolean): void;
    /** The annotation representing the user's location */
    userLocation(): _MKUserLocation;
    userTrackingMode(): MKUserTrackingMode;
    setUserTrackingMode$(value: MKUserTrackingMode): void;
    /**
     * Returns YES if the user's location is displayed within the currently visible map region.
     */
    userLocationVisible(): boolean;
    annotations(): _NSArray;
    selectedAnnotations(): _NSArray;
    setSelectedAnnotations$(value: _NSArray): void;
    /**
     * annotationVisibleRect is the visible rect where the annotations views are currently displayed. The delegate can use annotationVisibleRect when animating the adding of the annotations views in mapView:didAddAnnotationViews:
     */
    annotationVisibleRect(): CGRect;
    overlays(): _NSArray;
}
