import { LatLng, type MarkerEventMap, type MarkerLabel, type MarkerOverlay, type UnionIcon } from 'tg-map-core';
import { type PropType } from 'vue';
import { type EventEmits } from '../../utils/vue-utils';
import TgMarkerClusterer from '../extra/TgMarkerClusterer.vue';
import type TgInfoBox from './TgInfoBox.vue';
import type TgInfoWindow from './TgInfoWindow.vue';
import type TgLabel from './TgLabel.vue';
type TgMarkerEmits = {
    'update:position': LatLng;
};
export type TgMarkerEventEmits = EventEmits<MarkerEventMap & TgMarkerEmits>;
export declare const tgMarkerProps: {
    position: {
        type: PropType<LatLng>;
        required: true;
    };
    title: {
        type: PropType<string>;
    };
    label: {
        type: PropType<MarkerLabel>;
    };
    icon: {
        type: PropType<UnionIcon>;
    };
    clickable: {
        type: PropType<boolean>;
    };
    draggable: {
        type: PropType<boolean>;
    };
    crossOnDrag: {
        type: PropType<boolean>;
    };
    cursor: {
        type: PropType<string>;
    };
    zIndex: {
        type: PropType<number>;
    };
    visible: {
        type: PropType<boolean>;
    };
    normalizePositionForBaidu: {
        type: PropType<boolean>;
    };
    /**
       * 是否自动添加到TgMarkerClusterer中去
       * @default true
       */
    autoAddToClusterer: {
        type: PropType<boolean>;
        default: boolean;
    };
    'onUpdate:position': import("vue").Prop<import("tg-map-core").EventCallback<LatLng>>;
};
declare const TgMarker: import("vue").DefineComponent<{
    position: LatLng;
    autoAddToClusterer: boolean;
    label?: MarkerLabel | undefined;
    title?: string | undefined;
    draggable?: boolean | undefined;
    visible?: boolean | undefined;
    zIndex?: number | undefined;
    clickable?: boolean | undefined;
    normalizePositionForBaidu?: boolean | undefined;
    icon?: UnionIcon | undefined;
    crossOnDrag?: boolean | undefined;
    cursor?: string | undefined;
    'onUpdate:position'?: (import("tg-map-core").EventCallback<LatLng> & ((event: LatLng) => any)) | undefined;
    onClick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDblclick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onRightclick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onContextmenu?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDragstart?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDrag?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDragend?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseover?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseout?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMousedown?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseup?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
}, {
    attrs: import("vue").ComputedRef<{
        binds: Record<string, unknown>;
        listeners: Record<string, unknown>;
        listenerProps: Record<string, unknown>;
    }>;
    marker: MarkerOverlay;
    labelOverlay: TgLabel | undefined;
    info: TgInfo | undefined;
    emittedPosition: LatLng | undefined;
    autoAddToClustererWhenCreate: boolean;
}, {}, {}, {
    recreate(): void;
    $clusterer(): TgMarkerClusterer | undefined;
    onAddLabel(label: TgLabel): void;
    onRemoveLabel(_label: TgLabel): void;
    onAddInfo(info: TgInfo): void;
    onRemoveInfo(info: TgInfo): void;
    onInfoShowChanged(info: TgInfo, isShow: boolean): void;
}, import("vue").DefineComponent<{}, {}, {}, {}, {
    recreate(): void;
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, import("vue").ComponentOptionsMixin, EventEmits<MarkerEventMap & TgMarkerEmits>, string, import("vue").PublicProps, Readonly<{
    position: LatLng;
    autoAddToClusterer: boolean;
    label?: MarkerLabel | undefined;
    title?: string | undefined;
    draggable?: boolean | undefined;
    visible?: boolean | undefined;
    zIndex?: number | undefined;
    clickable?: boolean | undefined;
    normalizePositionForBaidu?: boolean | undefined;
    icon?: UnionIcon | undefined;
    crossOnDrag?: boolean | undefined;
    cursor?: string | undefined;
    'onUpdate:position'?: (import("tg-map-core").EventCallback<LatLng> & ((event: LatLng) => any)) | undefined;
    onClick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDblclick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onRightclick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onContextmenu?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDragstart?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDrag?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDragend?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseover?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseout?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMousedown?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseup?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
}> & Readonly<{
    onClick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDblclick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onRightclick?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onContextmenu?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDragstart?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDrag?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onDragend?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseover?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseout?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMousedown?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    onMouseup?: ((event: import("tg-map-core").Tg.MouseEvent) => any) | undefined;
    "onUpdate:position"?: ((event: LatLng) => any) | undefined;
}>, {
    autoAddToClusterer: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
type TgMarker = InstanceType<typeof TgMarker>;
export default TgMarker;
export type TgInfo = TgInfoWindow | TgInfoBox;
export type TgMarkerPublicInstance = {
    marker: MarkerOverlay;
    onAddInfo(info: TgInfo): void;
    onRemoveInfo(info: TgInfo): void;
    onInfoShowChanged(info: TgInfo, isShow: boolean): void;
    onAddLabel(label: TgLabel): void;
    onRemoveLabel(label: TgLabel): void;
};
