import { LatLng } from '../../map/lat-lng';
import type { UnionIcon } from '../../map/map/overlay/icon';
import { type MarkerEventMap, type MarkerOverlay } from '../../map/map/overlay/marker';
import type { MarkerLabel } from '../../map/map/overlay/marker-label';
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;
};
declare const TgMarker: import("vue").DefineComponent<{
    position: LatLng;
    autoAddToClusterer: boolean;
    zIndex?: number | undefined;
    clickable?: boolean | undefined;
    visible?: boolean | undefined;
    label?: MarkerLabel | undefined;
    title?: string | undefined;
    draggable?: boolean | undefined;
    normalizePositionForBaidu?: boolean | undefined;
    icon?: UnionIcon | undefined;
    crossOnDrag?: boolean | undefined;
    cursor?: string | undefined;
    'onUpdate:position'?: (import("../index.ts").EventCallback<LatLng> & ((event: LatLng) => any)) | undefined;
    onClick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDblclick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMousedown?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseup?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseout?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseover?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onRightclick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onContextmenu?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDragstart?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDrag?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDragend?: ((event: import("../index.ts").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;
}, {}, {}, {
    $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;
    zIndex?: number | undefined;
    clickable?: boolean | undefined;
    visible?: boolean | undefined;
    label?: MarkerLabel | undefined;
    title?: string | undefined;
    draggable?: boolean | undefined;
    normalizePositionForBaidu?: boolean | undefined;
    icon?: UnionIcon | undefined;
    crossOnDrag?: boolean | undefined;
    cursor?: string | undefined;
    'onUpdate:position'?: (import("../index.ts").EventCallback<LatLng> & ((event: LatLng) => any)) | undefined;
    onClick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDblclick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMousedown?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseup?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseout?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseover?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onRightclick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onContextmenu?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDragstart?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDrag?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDragend?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
}> & Readonly<{
    onClick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDblclick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMousedown?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseup?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseout?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onMouseover?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onRightclick?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onContextmenu?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDragstart?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDrag?: ((event: import("../index.ts").Tg.MouseEvent) => any) | undefined;
    onDragend?: ((event: import("../index.ts").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;
};
