import { PWF } from '../../pwfreader/PWF';
import { SelectedNodeServices } from '../SelectedNodeServices';
import { HiddenNodeServices } from '../HiddenNodeServices/HiddenNodeServices';
import type { PublicNode } from '../../types/PublicNode';
export type InternalNode = {
    id: number;
    parentId: number | undefined;
    children: number[];
    meshnodes: number[];
    isFirstObject: boolean;
};
export declare class ObjectTree {
    pwf: PWF;
    resourceId: number;
    _selectedNodeServices: SelectedNodeServices | null;
    _hiddenNodeServices: HiddenNodeServices | null;
    nodeIds: Set<number>;
    constructor(params: {
        pwf: PWF;
        resourceId: number;
    });
    set hiddenNodeServices(hiddenNodeServices: HiddenNodeServices);
    get hiddenNodeServices(): HiddenNodeServices;
    set selectedNodeServices(selectedNodeServices: SelectedNodeServices);
    get selectedNodeServices(): SelectedNodeServices;
    add: (nodeId: number) => boolean;
    has: (nodeId: number) => boolean;
    getParentInternalNode: (internalNode: InternalNode) => InternalNode | undefined;
    getInternalObjectTreeNode(nodeId: number): InternalNode | undefined;
    getObjectTreeNode(nodeId: number): PublicNode | undefined;
    buildFromPWF: () => {
        isComplete: boolean;
    };
    buildFromNodeIds: (nodeIds: number[]) => {
        nodeIds: number[];
        ancestors: number[];
        children: number[];
    };
    synchronizeSelected: (source: ObjectTree) => void;
    private synchronizeSelectedNodeIds;
    private getSelectedStack;
    private evaluateSelectedState;
    synchronizeHidden: (source: ObjectTree) => void;
    private synchronizeHiddenNodes;
}
