import type { Meshnode } from '../../pwfreader/PWFTypes';
import type { InternalNode, ObjectTree } from '../ObjectTree';
import type { Models } from '../Models';
export type SelectMethod = keyof typeof SelectedNodeServices.SelectMethod;
export declare class SelectedNodeServices {
    private _selectionOption;
    private selectedVirtualMeshnodeIndicesByResourceId;
    private selectedFirstObjectCountByResourceId;
    private selectedNodeIdsByResourceId;
    private partiallySelectedNodeIdsByResourceId;
    private models;
    private objectTrees;
    static SelectMethod: {
        readonly Geometry: "Geometry";
        readonly FirstObject: "FirstObject";
    };
    constructor(params: {
        models: Models;
        objectTrees: Map<number, ObjectTree>;
    });
    get selectionOption(): SelectMethod;
    set selectionOption(method: SelectMethod);
    getSelectedVirtualMeshnodesSet(resourceId: number): Set<number>;
    addSelectedMeshnodeIndices(virtualMeshnodeIndices: number[], resourceId: number): void;
    private selectFirstObject;
    private selectGeometry;
    clear(resourceId: number): void;
    selectAll(resourceId: number): void;
    private nodeNeedsUpdating;
    updateSelectedAncestry(resourceId: number, nodeId: number, isSelected: boolean): void;
    private removeChildNodesFromPartiallySelected;
    private recursivelyUpdateParentNodes;
    setMeshnodeSelectedByVirtualIndex(virtualMeshnodeIndex: number, select: boolean): void;
    setMeshnodeSelected(meshnode: Meshnode, select: boolean, resourceId: number): void;
    setNodeSelected(internalNode: InternalNode, select: boolean, resourceId: number): void;
    private updateNodeAndChildren;
    getSelectedNodeIds(resourceId: number): Set<number>;
    getPartiallySelectedNodeIds(resourceId: number): Set<number>;
    getSelectedObjectCount(method: SelectMethod, resourceId: number): number;
    hasSelectedMeshnodeIndices(arr: number[], resourceId: number): boolean;
    removeSelectedMeshnodeIndices(virtualMeshnodeIndices: number[], resourceId: number): void;
    private unSelectGeometry;
    private unSelectFirstObject;
}
