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

interface Options$1 {
    position: Vector3;
    name: string;
    text: string;
    fontSize?: number;
    color?: string;
    padding?: number;
    center?: Vector2;
    renderOrder?: number;
    circle?: {
        color: string;
        radius: number;
    };
}
declare class LabelMarker extends Element<any> {
    private options;
    static NAME: string;
    private scale;
    sprite: Sprite;
    constructor(options: Options$1);
    complete(): void;
    __init(): void;
    create(): Sprite;
    setPosition(position: Vector3): void;
    /**
     * 生成 canvas
     */
    private generateCanvas;
    private makeCanvasSprite;
}

interface Options {
    name: string;
    collision?: boolean;
}
declare class LabelsLayer extends Element<any> {
    static NAME: string;
    private scale;
    private options;
    private group;
    private updateSize;
    constructor({ name, collision }: Options);
    complete(): void;
    __init(): void;
    add(...markers: LabelMarker[]): this;
    remove(...markers: LabelMarker[]): this;
    private getPoiScale;
    private isMarkerCollision;
    /**
     * three世界坐标转为屏幕坐标
     */
    private toScreenPos;
}

declare module '@ktmap/map' {
    interface ElementType {
        LabelsLayer: LabelsLayer;
    }
    interface KTMap {
        LabelsLayer: typeof LabelsLayer;
        LabelMarker: typeof LabelMarker;
    }
}

export { LabelMarker, LabelsLayer };
