/// <reference types="react" />
import { ViewProps, ImageSourcePropType } from 'react-native';
import type { MapStatus, MapType, Region, LatLng, Location, WeatherType } from '../types';
import Component from './component';
import Marker from './marker';
import Polyline from './polyline';
import MultiPoint from './multi-point';
import TexturePolyline from './texture-polyline';
import { DrivePath, RidePath, WalkPath } from '../route-view';
export interface UserLocationStyleProps {
    image?: ImageSourcePropType;
    fillColor?: string;
    strokeColor?: string;
    strokeWidth?: number;
    locationDotBgColor?: string;
    locationDotFillColor?: string;
}
export interface MapViewProps extends ViewProps {
    children?: any;
    /**
     * 天气效果
     */
    wheather?: WeatherType;
    /**
     * 地图类型
     */
    mapType?: MapType;
    /**
     * 地图中心
     */
    center?: LatLng;
    /**
     * 地图显示区域
     */
    region?: Region;
    /**
     * 缩放级别
     */
    zoomLevel?: number;
    /**
     * 倾斜角度，取值范围 [0, 60]
     */
    rotation?: number;
    /**
     * 倾斜角度
     */
    tilt?: number;
    /**
     * 是否启用定位
     */
    locationEnabled?: boolean;
    userTrackingMode?: 'none' | 'follow' | 'followWithHeading';
    /**
     * 定位间隔(ms)，默认 2000
     *
     * @platform android
     */
    locationInterval?: number;
    /**
     * 定位的最小更新距离
     *
     * @platform ios
     */
    distanceFilter?: number;
    /**
     * 是否显示室内地图
     */
    showsIndoorMap?: boolean;
    /**
     * 是否显示室内地图楼层切换控件
     *
     * TODO: 似乎并不能正常显示
     */
    showsIndoorSwitch?: boolean;
    /**
     * 是否显示3D建筑
     */
    showsBuildings?: boolean;
    /**
     * 是否显示文本标签
     */
    showsLabels?: boolean;
    /**
     * 是否显示指南针
     */
    showsCompass?: boolean;
    /**
     * 是否显示放大缩小按钮
     *
     * @platform android
     */
    showsZoomControls?: boolean;
    /**
     * 是否显示比例尺
     */
    showsScale?: boolean;
    /**
     * 是否显示定位按钮
     *
     * @platform android
     */
    showsLocationButton?: boolean;
    /**
     * 是否显示路况
     */
    showsTraffic?: boolean;
    /**
     *
     */
    locationStyle?: UserLocationStyleProps;
    /**
     * 最大缩放级别
     */
    maxZoomLevel?: number;
    /**
     * 最小缩放级别
     */
    minZoomLevel?: number;
    /**
     * 限制地图只能显示某个矩形区域
     */
    limitRegion?: Region;
    /**
     * 是否启用缩放手势，用于放大缩小
     */
    zoomEnabled?: boolean;
    /**
     * 是否启用滑动手势，用于平移
     */
    scrollEnabled?: boolean;
    /**
     * 是否启用旋转手势，用于调整方向
     */
    rotateEnabled?: boolean;
    /**
     * 是否启用倾斜手势，用于改变视角
     */
    tiltEnabled?: boolean;
    /**
     * 点击事件
     */
    onClick?: (coordnate: LatLng) => void;
    /**
     * 长按事件
     */
    onLongClick?: (coordnate: LatLng) => void;
    /**
     * 地图状态改变事件，在动画结束后触发
     */
    onStatusChangeComplete?: (status: MapStatus) => void;
    /**
     * 定位事件
     */
    onLocation?: (location: Location) => void;
    /**
     * 动画取消事件
     */
    onAnimateCancel?: () => void;
    /**
     * 动画完成事件
     */
    onAnimateFinished?: () => void;
}
/**
 * @ignore
 */
export default class MapView extends Component<MapViewProps> {
    static propTypes: {
        wheather: import("prop-types").Requireable<number>;
        mapType: import("prop-types").Requireable<number>;
        locationEnabled: import("prop-types").Requireable<boolean>;
        userTrackingMode: import("prop-types").Requireable<string>;
        locationInterval: import("prop-types").Requireable<number>;
        locationStyle: import("prop-types").Requireable<import("prop-types").InferProps<{
            image: import("prop-types").Requireable<number | object>;
            fillColor: import("prop-types").Requireable<string>;
            strokeColor: import("prop-types").Requireable<string>;
            strokeWidth: import("prop-types").Requireable<number>;
            locationDotBgColor: import("prop-types").Requireable<string>;
            locationDotFillColor: import("prop-types").Requireable<string>;
            enablePulseAnnimation: import("prop-types").Requireable<boolean>;
            showsHeadingIndicator: import("prop-types").Requireable<boolean>;
            showsAccuracyRing: import("prop-types").Requireable<boolean>;
        }>>;
        distanceFilter: import("prop-types").Requireable<number>;
        showsIndoorMap: import("prop-types").Requireable<boolean>;
        showsIndoorSwitch: import("prop-types").Requireable<boolean>;
        showsBuildings: import("prop-types").Requireable<boolean>;
        showsLabels: import("prop-types").Requireable<boolean>;
        showsCompass: import("prop-types").Requireable<boolean>;
        showsZoomControls: import("prop-types").Requireable<boolean>;
        showsScale: import("prop-types").Requireable<boolean>;
        showsLocationButton: import("prop-types").Requireable<boolean>;
        showsTraffic: import("prop-types").Requireable<boolean>;
        maxZoomLevel: import("prop-types").Requireable<number>;
        minZoomLevel: import("prop-types").Requireable<number>;
        zoomLevel: import("prop-types").Requireable<number>;
        center: import("prop-types").Requireable<import("prop-types").InferProps<{
            latitude: import("prop-types").Validator<number>;
            longitude: import("prop-types").Validator<number>;
        }>>;
        region: import("prop-types").Requireable<import("prop-types").InferProps<{
            latitude: import("prop-types").Validator<number>;
            longitude: import("prop-types").Validator<number>; /**
             * 地图显示区域
             */
            latitudeDelta: import("prop-types").Validator<number>;
            longitudeDelta: import("prop-types").Validator<number>;
        }>>;
        limitRegion: import("prop-types").Requireable<import("prop-types").InferProps<{
            latitude: import("prop-types").Validator<number>;
            longitude: import("prop-types").Validator<number>; /**
             * 地图显示区域
             */
            latitudeDelta: import("prop-types").Validator<number>;
            longitudeDelta: import("prop-types").Validator<number>;
        }>>;
        tilt: import("prop-types").Requireable<number>;
        rotation: import("prop-types").Requireable<number>;
        zoomEnabled: import("prop-types").Requireable<boolean>;
        scrollEnabled: import("prop-types").Requireable<boolean>;
        rotateEnabled: import("prop-types").Requireable<boolean>;
        tiltEnabled: import("prop-types").Requireable<boolean>;
        hitSlop?: import("prop-types").Validator<import("react-native").Insets | undefined> | undefined;
        onLayout?: import("prop-types").Validator<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
        pointerEvents?: import("prop-types").Validator<"box-none" | "none" | "box-only" | "auto" | undefined> | undefined;
        removeClippedSubviews?: import("prop-types").Validator<boolean | undefined> | undefined;
        style?: import("prop-types").Validator<import("react-native").StyleProp<import("react-native").ViewStyle>> | undefined;
        testID?: import("prop-types").Validator<string | undefined> | undefined;
        nativeID?: import("prop-types").Validator<string | undefined> | undefined;
        collapsable?: import("prop-types").Validator<boolean | undefined> | undefined;
        needsOffscreenAlphaCompositing?: import("prop-types").Validator<boolean | undefined> | undefined;
        renderToHardwareTextureAndroid?: import("prop-types").Validator<boolean | undefined> | undefined;
        focusable?: import("prop-types").Validator<boolean | undefined> | undefined;
        shouldRasterizeIOS?: import("prop-types").Validator<boolean | undefined> | undefined;
        isTVSelectable?: import("prop-types").Validator<boolean | undefined> | undefined;
        hasTVPreferredFocus?: import("prop-types").Validator<boolean | undefined> | undefined;
        tvParallaxProperties?: import("prop-types").Validator<import("react-native").TVParallaxProperties | undefined> | undefined;
        tvParallaxShiftDistanceX?: import("prop-types").Validator<number | undefined> | undefined;
        tvParallaxShiftDistanceY?: import("prop-types").Validator<number | undefined> | undefined;
        tvParallaxTiltAngle?: import("prop-types").Validator<number | undefined> | undefined;
        tvParallaxMagnification?: import("prop-types").Validator<number | undefined> | undefined;
        onStartShouldSetResponder?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
        onMoveShouldSetResponder?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
        onResponderEnd?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onResponderGrant?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onResponderReject?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onResponderMove?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onResponderRelease?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onResponderStart?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onResponderTerminationRequest?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
        onResponderTerminate?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onStartShouldSetResponderCapture?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
        onMoveShouldSetResponderCapture?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
        onTouchStart?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onTouchMove?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onTouchEnd?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onTouchCancel?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        onTouchEndCapture?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
        accessible?: import("prop-types").Validator<boolean | undefined> | undefined;
        accessibilityActions?: import("prop-types").Validator<readonly Readonly<{
            name: import("react-native").AccessibilityActionName;
            label?: string | undefined;
        }>[] | undefined> | undefined;
        accessibilityLabel?: import("prop-types").Validator<string | undefined> | undefined;
        accessibilityRole?: import("prop-types").Validator<"image" | "none" | "button" | "link" | "search" | "keyboardkey" | "text" | "adjustable" | "imagebutton" | "header" | "summary" | "alert" | "checkbox" | "combobox" | "menu" | "menubar" | "menuitem" | "progressbar" | "radio" | "radiogroup" | "scrollbar" | "spinbutton" | "switch" | "tab" | "tablist" | "timer" | "toolbar" | undefined> | undefined;
        accessibilityState?: import("prop-types").Validator<import("react-native").AccessibilityState | undefined> | undefined;
        accessibilityHint?: import("prop-types").Validator<string | undefined> | undefined;
        accessibilityValue?: import("prop-types").Validator<import("react-native").AccessibilityValue | undefined> | undefined;
        onAccessibilityAction?: import("prop-types").Validator<((event: import("react-native").AccessibilityActionEvent) => void) | undefined> | undefined;
        accessibilityComponentType?: import("prop-types").Validator<"none" | "button" | "radiobutton_checked" | "radiobutton_unchecked" | undefined> | undefined;
        accessibilityLiveRegion?: import("prop-types").Validator<"none" | "polite" | "assertive" | undefined> | undefined;
        importantForAccessibility?: import("prop-types").Validator<"auto" | "yes" | "no" | "no-hide-descendants" | undefined> | undefined;
        accessibilityElementsHidden?: import("prop-types").Validator<boolean | undefined> | undefined;
        accessibilityTraits?: import("prop-types").Validator<"image" | "none" | "button" | "link" | "search" | "text" | "adjustable" | "header" | "summary" | "selected" | "plays" | "key" | "disabled" | "frequentUpdates" | "startsMedia" | "allowsDirectInteraction" | "pageTurn" | import("react-native").AccessibilityTrait[] | undefined> | undefined;
        accessibilityViewIsModal?: import("prop-types").Validator<boolean | undefined> | undefined;
        onAccessibilityEscape?: import("prop-types").Validator<(() => void) | undefined> | undefined;
        onAccessibilityTap?: import("prop-types").Validator<(() => void) | undefined> | undefined;
        onMagicTap?: import("prop-types").Validator<(() => void) | undefined> | undefined;
        accessibilityIgnoresInvertColors?: import("prop-types").Validator<boolean | undefined> | undefined;
    };
    nativeComponent: string;
    /**
     * 设置地图状态（坐标、缩放级别、倾斜度、旋转角度），支持动画过度
     *
     * @param status
     * @param duration
     */
    setStatus(status: MapStatus, duration?: number): void;
    render(): JSX.Element;
    static Marker: typeof Marker;
    static Polyline: typeof Polyline;
    static Polygon: import("react-native").HostComponent<import("./polygon").PolygonProps>;
    static Circle: import("react-native").HostComponent<import("./circle").CircleProps>;
    static HeatMap: import("react-native").HostComponent<import("./heat-map").HeatMapProps>;
    static MultiPoint: typeof MultiPoint;
    static DrivePath: typeof DrivePath;
    static RidePath: typeof RidePath;
    static WalkPath: typeof WalkPath;
    static TexturePolyline: typeof TexturePolyline;
}
