import { CCClasses } from '@buerli.io/classcad';
import { DrawingID, GeometryElement, GraphicID, IStructureObject, IStructureTree, MemberType, ObjectID, PointMem, PointMemValue, SelectedItem } from '@buerli.io/core';
import * as THREE from 'three';
import { WithChildren, WithMembers } from '../types';
export declare function membersValues(drawingId: DrawingID, ccObjId: DrawingID): any;
export declare function addMembers(drawingId: DrawingID, ccObjId: DrawingID): {
    members?: undefined;
} | {
    members: any;
};
export declare function useGlobalToLocalMatrix(drawingId: DrawingID, objId: ObjectID | undefined): THREE.Matrix4;
export declare function getGlobalToLocalMatrix(drawingId: DrawingID, objId: ObjectID): THREE.Matrix4;
export declare function setReference(index: number, state: any, set: any): (selected: SelectedItem[]) => void;
export declare function convertToVector(point: PointMem): THREE.Vector3;
export declare function convertToArray(point: PointMem): number[];
export declare function linesIntersection(point1: THREE.Vector3, dir1: THREE.Vector3, point2: THREE.Vector3, dir2: THREE.Vector3): THREE.Vector3 | null;
export declare const angleVecVec: (a: THREE.Vector3, b: THREE.Vector3) => number;
export declare const calculateTangent: (tree: IStructureTree, object: IStructureObject & WithMembers & WithChildren, point: THREE.Vector3) => THREE.Vector3 | undefined;
export declare function getDescendants(tree: IStructureTree, objectId: ObjectID): number[];
export declare function getAncestorIdByClass(drawingId: DrawingID, objectId: ObjectID, parentClass: CCClasses): number | null;
export declare const is2DConstraint: (arg: IStructureObject | CCClasses) => boolean;
export declare const degreesToRadians: (degrees: number) => number;
export declare const radiansToDegrees: (radians: number) => number;
export declare const getPointOnPlane: (unprojectedPoint: THREE.Vector3, camera: THREE.Camera, globalToLocalM: THREE.Matrix4) => THREE.Vector3;
export declare const closestAngle: (value: number, to: number) => number;
export declare const stringifyValue: (value: string | number | PointMemValue, type: MemberType) => string;
export declare function findObject(drawingId: DrawingID, id: GraphicID | ObjectID, unrollRefs?: boolean): IStructureObject | GeometryElement | undefined;
export declare function round(value: number, digits: number): number;
export declare function rgbToHex(color: {
    r: number;
    g: number;
    b: number;
}): string;
