declare class EventEmitter> { private events; constructor(); on(event: K, listener: (payload: Events[K]) => void): void; off(event: K, listener: (payload: Events[K]) => void): void; emit(event: K, data: Events[K]): void; } /** 统一位置描述符 */ type SgsMapNode = { type: 'coord'; floorId: number; x: number; z: number; y?: number; } | { type: 'poiId'; value: number; } | { type: 'nodeName'; value: string; }; /** 单点吸附详情 */ interface SnapDetail { original: { x: number; z: number; }; nearest: { x: number; z: number; }; distance: number; } /** 寻路结果 */ interface RouteResult { success: boolean; distance: number; duration: number; pathPoints: Array<{ x: number; y: number; z: number; }>; startSnap: SnapDetail; endSnap: SnapDetail; computeTimeMs: number; polyCount: number; warnings: string[]; errorCode?: string; message?: string; } /** 寻路选项 */ interface RouteOptions { mode?: 'walk' | 'accessible'; } /** SDK 初始化配置 */ interface SGSMapSDKOptions { container: string | HTMLElement; sdkUrl?: string; targetOrigin?: string; floorId?: number; timeout?: number; } /** SDK 事件映射 */ interface SGSMapEvents { ready: { engineVersion: string; protocolVersion: number; }; poiClick: { id: number; name: string; type: string; floorId?: number; description?: string; }; floorChanged: { floorId: number; }; error: { code: string; message: string; }; loadError: { type: string; detail: string; }; } /** SDK 错误码 */ type SGSErrorCode = 'ERR_TIMEOUT' | 'ERR_NO_PATH' | 'ERR_FLOOR_NOT_FOUND' | 'ERR_NOT_READY' | 'ERR_POI_NOT_FOUND' | 'ERR_NETWORK' | 'ERR_IFRAME_DEAD' | 'ERR_UNAUTHORIZED' | 'ERR_UNSUPPORTED' | 'ERR_FAILED'; /** 图钉配置参数 */ interface MarkerConfig { id: string; name?: string; iconUrl?: string; anchorNodeName?: string; position?: [number, number, number] | { x: number; y: number; z: number; }; } declare class SGSMapSDK extends EventEmitter { private container; private sdkUrl; private floorId; private targetOrigin; private iframe; private isReady; private defaultTimeout; private promiseQueue; private _messageListener; constructor(options: SGSMapSDKOptions); private _initIframeBridge; private _generateRequestId; private _postCommand; private _postCommandAsync; getIsReady(): boolean; getCurrentFloor(): number; focusTo(node: SgsMapNode | string): void; changeFloor(floorId: number, timeout?: number): Promise<{ success: boolean; floorId: number; }>; addMarker(config: MarkerConfig): void; removeMarker(markerId: string): void; clearMarkers(): void; highlightPolygon(nodeName: string): void; planRoute(from: SgsMapNode | string, to: SgsMapNode | string, options?: any, timeout?: number): Promise; clearRoute(): void; getState(): Promise; resetView(): void; setViewMode(mode: '2d' | '3d'): void; toggleLayer(types: string[], visible: boolean, timeout?: number): Promise<{ success: boolean; visibleTypes: string[]; }>; destroy(): void; } export { type MarkerConfig, type RouteOptions, type RouteResult, type SGSErrorCode, type SGSMapEvents, type SGSMapSDKOptions, type SgsMapNode, type SnapDetail, SGSMapSDK as default };