declare namespace AMap { class Map { constructor(container: string | HTMLElement, opts?: MapOptions) addControl(control: unknown): void add(layer: unknown): void remove(layer: unknown): void destroy(): void setCenter(center: [number, number]): void setZoom(zoom: number): void setPitch(pitch: number): void getPitch(): number setRotation(rotation: number): void getRotation(): number on(event: string, callback: (...args: unknown[]) => void): void off(event: string, callback: (...args: unknown[]) => void): void getCenter(): { lng: number; lat: number } getZoom(): number getAllOverlays(type?: string): unknown[] addOverlay(overlay: unknown): void removeOverlay(overlay: unknown): void clearMap(): void } interface MapOptions { viewMode?: '2D' | '3D' pitch?: number rotation?: number zoom?: number zooms?: [number, number] center?: [number, number] mapStyle?: string features?: string[] layers?: unknown[] skyColor?: string maxPitch?: number resizeEnable?: boolean dragEnable?: boolean zoomEnable?: boolean keyboardEnable?: boolean doubleClickZoom?: boolean scrollWheel?: boolean } class Marker { constructor(opts?: MarkerOptions) on(event: string, callback: (...args: unknown[]) => void): void setPosition(position: [number, number]): void getPosition(): { lng: number; lat: number } setContent(content: string): void setOpacity(opacity: number): void setMap(map: Map | null): void remove(): void } interface MarkerOptions { position?: [number, number] content?: string | HTMLElement offset?: Pixel zIndex?: number opacity?: number title?: string } class InfoWindow { constructor(opts?: InfoWindowOptions) open(map: Map, position?: [number, number]): void close(): void } interface InfoWindowOptions { content?: string | HTMLElement offset?: Pixel size?: Size isCustom?: boolean } class Scale {} class ToolBar { constructor(opts?: Record) } class ControlBar { constructor(opts?: Record) } class Geolocation { constructor(opts?: Record) getCurrentPosition( onSuccess: (data: { position: { lng: number; lat: number } }) => void, onError?: (error: unknown) => void, ): void } class TileLayer { static Satellite: new () => TileLayer static RoadNet: new () => TileLayer setOpacity(opacity: number): void } class Pixel { constructor(x: number, y: number) } class Size { constructor(width: number, height: number) } class MarkerCluster { constructor(map: Map, markers: Marker[], opts?: Record) } } declare function AMapLoader_load(opts: { key: string version: string plugins?: string[] }): Promise declare namespace AMap { function getConfig(): { appname?: string } } declare module '@amap/amap-jsapi-loader' { const AMapLoader: { load: typeof AMapLoader_load } export default AMapLoader }