import { Component } from 'vue'; export type MarkerConfig = { kind: 'pin'; pinOptions?: google.maps.marker.PinElementOptions; title?: string; } | { kind: 'img'; src: string; title?: string; } | { kind: 'svgString'; svg: string; title?: string; } | { kind: 'customElement'; createElement: () => HTMLElement; title?: string; }; export interface MapControl { position?: google.maps.ControlPosition; index?: number; createElement: (ctx: { map: google.maps.Map; }) => HTMLElement; } export interface MapFocusConfig { name: string; featureType: google.maps.FeatureType; featureStyleOptions: google.maps.FeatureStyleOptions; } export interface CustomMarkerOptions { position: { lat: number; lng: number; }; marker?: MarkerConfig; title?: string; popup?: string; hoverable?: boolean; draggable?: boolean; clickable?: boolean; onClick?: (marker: google.maps.marker.AdvancedMarkerElement) => void; onDragEnd?: (marker: google.maps.marker.AdvancedMarkerElement) => void; onHover?: (marker: google.maps.marker.AdvancedMarkerElement, isHovering: boolean) => void; } export declare const createMarker: (options: CustomMarkerOptions) => Promise; type MarkerContext = { id: string; marker: google.maps.marker.AdvancedMarkerElement; data: T; }; type UseMapMarkersReturn = { markers: Map>; setMap: (nextMap: google.maps.Map) => void; addMarker: (id: string, marker: google.maps.marker.AdvancedMarkerElement, data: T, onClick?: () => void) => void; openMarker: (id: string, options?: { component?: Component; props?: Record; loadData?: () => Promise>; }) => Promise; clearMarkers: () => void; }; export declare const useMapMarkers: () => UseMapMarkersReturn; export {};