import { Sprite, Vector3, Object3D } from 'three';
import { Element, Map } from '@ktmap/map';

interface IOptions$1 {
    name: string;
    icon: any;
    scale?: number;
    renderOrder: number;
    position: Vector3;
}
declare class PoiMarker extends Element<Record<string, unknown>> {
    private options;
    static NAME: string;
    private _scale;
    sprite: Sprite;
    constructor(options: IOptions$1);
    complete(): void;
    __inject(map: Map, _scale?: number): this;
    __init(): void;
    _create(): Promise<Sprite>;
    setPosition(position: Vector3): void;
    private generateCanvas;
    private makeCanvasSprite;
}

interface IOptions {
    name: string;
    collision?: boolean;
}
declare class PoisLayer extends Element<Record<string, unknown>> {
    static NAME: string;
    private _scale;
    private options;
    _group: Object3D;
    constructor({ name, collision }: IOptions);
    complete(): void;
    __init(): void;
    add(...poiMarker: PoiMarker[]): Promise<this>;
    remove(...poiMarker: PoiMarker[]): this;
    /**
     * @desc 暴露出更新size方法，使其可以在 cameraControls 控制时候更新
     */
    _updateSize(): void;
    private getPoiScale;
    /**
     * @desc 检测两个标注sprite是否碰撞
     */
    private isMarkerCollision;
    /**
     * @desc three世界坐标转为屏幕坐标
     */
    private toScreenPos;
}

declare module '@ktmap/map' {
    interface ElementType {
        PoisLayer: PoisLayer;
    }
    interface KTMap {
        PoisLayer: typeof PoisLayer;
        PoiMarker: typeof PoiMarker;
    }
}

export { PoiMarker, PoisLayer };
