import type { Five } from '@realsee/five';
import { BasePlugin } from '../BasePlugin';
import * as THREE from 'three';
import type { Object3DHelperEventMap, Object3DHelperState, ObjectHelperControllers, PositionFrom } from './typing';
import type { HelperConfig, HelperOffset, Object3DHelperPluginEventMap, Object3DHelperPluginState } from './typing';
import { Subscribe } from '@realsee/five';
export declare const PLUGIN = "Object3DHelperPlugin";
export type AddObject3DHelperConfig = {
    positionFrom?: PositionFrom;
    offset?: HelperOffset;
    /** Helpers 的世界坐标偏移量 */
    helperOffset?: THREE.Vector3;
    yAxis?: THREE.Vector3 | (() => THREE.Vector3);
    xAxis?: THREE.Vector3 | (() => THREE.Vector3);
    zAxis?: THREE.Vector3 | (() => THREE.Vector3);
    moveHelper?: HelperConfig<{
        xArrowEnable?: boolean;
        yArrowEnable?: boolean;
        zArrowEnable?: boolean;
    }>;
    /** 是否展示 MoveHelper 拖拽时的坐标提示，默认 false */
    moveHelperTips?: boolean;
    rotateHelper?: HelperConfig<{
        yzCircleEnable?: boolean;
        xzCircleEnable?: boolean;
        xyCircleEnable?: boolean;
        angleTipsEnable?: boolean;
    }>;
    boundingBoxHelper?: HelperConfig;
};
export declare class Object3DHelper {
    controllers: ObjectHelperControllers;
    state: Object3DHelperState;
    hooks: Subscribe<Object3DHelperEventMap>;
    constructor(controllers?: ObjectHelperControllers);
    show(options?: {
        userAction?: boolean;
    }): void;
    hide(options?: {
        userAction?: boolean;
    }): void;
    enable(options?: {
        userAction?: boolean;
    }): void;
    disable(options?: {
        userAction?: boolean;
    }): void;
    dispose(): void;
    setState(state: Partial<Object3DHelperState>, _options?: {
        userAction?: boolean;
    }): void;
    addControllers(controllers: ObjectHelperControllers): void;
    initialHelperMatrix(): void;
    private handleEnable;
    private handleVisible;
    private handleDispose;
    private everyControllerDo;
}
export declare class Controller extends BasePlugin.Controller<Object3DHelperPluginState, Object3DHelperPluginEventMap & BasePlugin.EventMap<Object3DHelperPluginState, any>, any, any> {
    name: string;
    data?: any;
    state: Object3DHelperState;
    objectHelperMap: Map<THREE.Object3D, {
        helper: Object3DHelper;
        disposers: (() => any)[];
        helperGroup: THREE.Group;
    }>;
    constructor(five: Five);
    show(options?: {
        userAction?: boolean;
    }): Promise<void>;
    hide(options?: {
        userAction?: boolean;
    }): Promise<void>;
    enable(options?: {
        userAction?: boolean;
    }): void;
    disable(options?: {
        userAction?: boolean;
    }): void;
    dispose(): void;
    load(_data: any): Promise<void>;
    setState(state: Partial<Object3DHelperState>, options?: {
        userAction?: boolean;
    } & Record<string, any>): void;
    getObject3DHelper(object3D: THREE.Object3D): {
        helper: Object3DHelper;
        disposers: (() => any)[];
        helperGroup: THREE.Group;
    } | undefined;
    addObject3DHelper(object3D: THREE.Object3D, paramsConfig?: AddObject3DHelperConfig): ObjectHelperControllers | undefined;
    removeObject3DHelper(object3D: THREE.Object3D): void;
    private handleEnable;
    private handleVisible;
    private handleDispose;
    private everyHelperDo;
    private actionIfStateIsEnabled;
    private getConfig;
}
