import { ObjResettingWithEvent, PickedInfo, SceneObjectPickedInfo, Viewer, ViewersPicking, ViewersPickingPointerEventFuncType } from "xbsj-xe2/dist-node/xe2-base-objects";
import { Destroyable, Event } from "xbsj-xe2/dist-node/xe2-base-utils";
import { ProjectManager } from "./index";
declare class ViewersPickingResetting extends Destroyable {
    private _sceneObjectsPicking;
    private _viewersPicking;
    get viewersPicking(): ViewersPicking;
    constructor(_sceneObjectsPicking: SceneObjectsPicking);
}
/**
 * SceneObjectsPicking用来捕获拾取操作发生时，哪个场景对象被拾取了，没有拾取到场景对象也会触发事件
 * 而没有场景对象自身的picked事件，只能监测自身是否被拾取到。
 */
export declare class SceneObjectsPicking extends Destroyable {
    private _projectManager;
    static pickedFuncs: {
        edit(sceneObjectPickedInfo: SceneObjectPickedInfo | undefined, projectManager: ProjectManager): void;
        info(sceneObjectPickedInfo: SceneObjectPickedInfo | undefined): void;
    };
    /**
     * 用来设置场景对象拾取后的操作
     * @example
     *
     * // 示例1
     * var projectManager = g_appProjectManager.xe2ProjectManager
     * projectManager.sceneObjectsPicking.pickedFunc = (sceneObjectPickedInfo, pickedInfo, viewer) => {
     *     // 参数解释
     *     // sceneObjectPickedInfo 如果有值，表示有场景对象拾取到，如果是undefined，表示没有拾取到场景对象，可以通过undefined获悉当前没有拾取到场景对象。
     *     // pickedInfo 各引擎原始的拾取信息
     *     // viewer 当前拾取操作的视口，如果有多个视口，那么就是点击操作发生的视口，这个视口有可能是CzmViewer，也有可能是UeViewer，或者别的。
     *
     *     const sceneObject = sceneObjectPickedInfo && sceneObjectPickedInfo.sceneObject;
     *     const str = sceneObject ? `拾取到的场景对象的名称是：${sceneObject.name }` : `没有拾取到场景对象！`;
     *     alert(str);
     * }
     *
     * // 示例2 也可以手动设置成info
     * var projectManager = g_appProjectManager.xe2ProjectManager
     * projectManager.sceneObjectsPicking.pickedFunc = projectManager.sceneObjectsPicking.constructor.pickedFuncs.info;
     * projectManager.sceneObjectsPicking.pickedFunc = XE2['xe2'].SceneObjectsPicking.pickedFuncs.info;
     *
     * // 示例3，也可以和已有的函数结合使用
     * var projectManager = g_appProjectManager.xe2ProjectManager
     * const { edit, info } = XE2['xe2'].SceneObjectsPicking.pickedFuncs;
     * projectManager.sceneObjectsPicking.pickedFunc = (sceneObjectPickedInfo, pickedInfo, viewer) => {
     *      edit(sceneObjectPickedInfo, pickedInfo, viewer, projectManager);
     *      info(sceneObjectPickedInfo, pickedInfo, viewer);
     * }
     *
     * // 示例4, 编辑操作
     * var projectManager = g_appProjectManager.xe2ProjectManager
     * projectManager.sceneObjectsPicking.pickedFunc = (sceneObjectPickedInfo, pickedInfo, viewer) => {
     *     if (!projectManager.editingOnPicking)
     *         return;
     *     var sceneObject = sceneObjectPickedInfo && sceneObjectPickedInfo.sceneObject;
     *     var sceneObjectEditingManager = projectManager.sceneObjectEditingManager;
     *     if (sceneObjectEditingManager.currentActiveEditing) {
     *         return;
     *     }
     *     if (sceneObject) {
     *         if (Reflect.has(sceneObject, 'editing')) {
     *             sceneObject.editing = true;
     *         }
     *         else if (Reflect.has(sceneObject, 'positionEditing')) {
     *             sceneObject.positionEditing = true;
     *         }
     *     }
     *     projectManager.selectSingleTreeItemWithSceneObject(sceneObject);
     * }
     */
    pickedFunc: (sceneObjectPickedInfo: SceneObjectPickedInfo | undefined) => void;
    private _pickedEvent;
    /**
     * 拾取事件
     * @example
     * var projectManager = g_appProjectManager.xe2ProjectManager
     * var d = projectManager.sceneObjectsPicking.pickedEvent.disposableOn(sceneObjectPickedInfo => console.log(sceneObjectPickedInfo))
     */
    get pickedEvent(): Event<[sceneObjectPickedInfo: SceneObjectPickedInfo | undefined, pickedInfo: PickedInfo | undefined, viewer: Viewer]>;
    private _pointerEventFuncs;
    set pointerEventFuncs(value: ViewersPickingPointerEventFuncType[]);
    get pointerEventFuncs(): ViewersPickingPointerEventFuncType[];
    get pointerEventFuncsChanged(): import("xbsj-xe2/dist-node/xe2-base-utils").Listener<[ViewersPickingPointerEventFuncType[], ViewersPickingPointerEventFuncType[]]>;
    private _viewersPickingResetting;
    get viewersPickingResetting(): ObjResettingWithEvent<ViewersPickingResetting, import("xbsj-xe2/dist-node/xe2-base-utils").Listener<[ViewersPickingPointerEventFuncType[], ViewersPickingPointerEventFuncType[]]>>;
    get projectManager(): ProjectManager;
    private _pickType;
    get pickType(): string;
    set pickType(value: string);
    get pickTypeChanged(): import("xbsj-xe2/dist-node/xe2-base-utils").Listener<[string, string]>;
    private _watching;
    constructor(_projectManager: ProjectManager);
}
export {};
