import { EventDispatcher, Object3DEventMap, Vector3 } from 'three';
import { Context } from '../context/context';
import { Overlay } from './overlay';
export interface PoiOptions {
    texts: {
        text: string;
        styles?: {
            [key: string]: string;
        };
    }[];
    icon?: string;
    icon_size?: [number, number];
    icon_position?: 'top' | 'bottom' | 'center';
    level: number;
    collision_enable: boolean;
    opacity: number;
    id: string;
    position: {
        x: number;
        y: number;
        z: number;
    };
    icon_opacity: number;
    icon_border: {
        color: string;
        width: number;
    };
    background: string;
    collision_hide_icon: boolean;
    built_in: boolean;
    box_only_icon: boolean;
}
type PoiEventMap = {
    [K in keyof PoiOptions as `change-${K}`]: {
        value: PoiOptions[K];
    };
} & Object3DEventMap;
export type PoiOptionsParam = Partial<PoiOptions>;
export declare class Poi extends EventDispatcher<PoiEventMap> {
    private context;
    div: HTMLDivElement;
    textDiv: HTMLDivElement;
    img?: HTMLImageElement;
    overlay: Overlay;
    options: PoiOptions;
    visible: boolean;
    size: {
        width: number;
        height: number;
    };
    position: Vector3;
    userData: any;
    showTextStatus: boolean;
    disposed: boolean;
    constructor(context: Context, options: PoiOptionsParam);
    get withinDisplayRange(): boolean;
    resetSize(): Promise<void>;
    renderHelperBox(): void;
    get clientPos(): {
        x: number;
        y: number;
    };
    initDiv(): HTMLDivElement;
    addIcon(): void;
    addText(): void;
    getPosition(): Vector3;
    initText(): HTMLDivElement;
    createTextFragment(): DocumentFragment;
    initIcon(): HTMLImageElement;
    private _changePosition;
    registryEvent(): void;
    unRegistryEvent(): void;
    setVisible(visible: boolean): void;
    changeOverlayVisible(visible: boolean): void;
    parentSetVisible(visible: boolean): void;
    getBox(boxScale?: number): {
        left: number;
        right: number;
        top: number;
        bottom: number;
    };
    getOriginBox(): {
        left: number;
        right: number;
        top: number;
        bottom: number;
    };
    isContain(x: number, y: number): boolean;
    dispose(): void;
}
export {};
