import type PanoTagPluginController from '..';
import type { Tag, TagContentType, Tag as TagData, TagInstance } from '../..';
import { BaseTag } from './BaseTag';
import type { PartialObjectDeep } from '../../../typings/typings';
import type { Vector3 } from 'three';
import { Rectangle } from '../../../Sculpt/Objects/Rectangle';
export type PlaneTagInterface<C extends TagContentType = TagContentType> = TagInstance<C, 'Plane'>;
export declare class PlaneTag<C extends TagContentType = TagContentType> extends BaseTag<C, 'Plane'> {
    rectanglePlane?: Rectangle;
    private _floorIndex?;
    private _floorIndexDirty;
    private _opacity?;
    constructor(plugin: PanoTagPluginController, tagData: TagData);
    /** 获取透明度 */
    get opacity(): number;
    /** 设置透明度 (0-1) */
    set opacity(value: number);
    /** 获取楼层索引（惰性计算 + 缓存） */
    get floorIndex(): number | undefined;
    /** 标记 floorIndex 需要重新计算（在位置等相关数据变化时调用） */
    invalidateFloorIndex(): void;
    applyVisible(): void;
    set(tag: PartialObjectDeep<Tag<C, 'Plane'>>, deepMerge?: boolean): void;
    setData(...data: Parameters<InstanceType<typeof BaseTag<C, 'Plane'>>['setData']>): void;
    /** 计算楼层索引 */
    private computeFloorIndex;
    private loadModel;
    private initialSculpt;
    editorEnable(): void;
    editorDisable(position?: Vector3[]): void;
    private renderVideoPlane;
    private renderImagePlane;
    private renderEmptyPlane;
    computeNormal(): Vector3;
}
