import * as THREE from 'three';
import { IStructureTree, ObjectID, IStructureObject } from '@buerli.io/core';
import { WithChildren, WithMembers } from '../../../../types';
export declare function getSketchDescendants(tree: IStructureTree, sketchId: ObjectID): number[];
export declare function findPointsAt(pos: THREE.Vector3, tree: IStructureTree, sketchId: ObjectID): IStructureObject[];
export declare function findConstraints(type: string, objA: IStructureObject, objB: IStructureObject, tree: IStructureTree, sketchId: ObjectID): number[];
declare type FilletInfo = {
    lines: Array<IStructureObject & WithMembers & WithChildren>;
    lineStarts: Array<IStructureObject & WithMembers>;
    lineEnds: Array<IStructureObject & WithMembers>;
    control: THREE.Vector3;
};
declare type NewFilletInfo = FilletInfo & {
    incidence: ObjectID;
};
declare type ExistingFilletInfo = FilletInfo & {
    object: IStructureObject & WithMembers & WithChildren;
    objectEnds: IStructureObject[];
    filletPoint: IStructureObject & WithMembers;
};
export declare function recognizeFilletableAngle(pos: THREE.Vector3, tree: IStructureTree, sketchId: ObjectID): NewFilletInfo | null;
export declare function getTouchPoints(info: FilletInfo, distance: number): THREE.Vector3[] | null;
export declare function calculateCenterPoint(start: THREE.Vector3, end: THREE.Vector3, control: THREE.Vector3): THREE.Vector3;
export declare function evaluateClockwise(start: THREE.Vector3, end: THREE.Vector3, control: THREE.Vector3): boolean;
export declare function calculateFilletParams(info: FilletInfo, distance: number): {
    start: THREE.Vector3;
    end: THREE.Vector3;
    center: THREE.Vector3;
    clockwise: boolean;
    control: THREE.Vector3;
} | null;
export declare function calculateNewFilletData(object: IStructureObject & WithMembers, tree: IStructureTree, sketchId: ObjectID): {
    info: NewFilletInfo;
    params: {
        start: THREE.Vector3;
        end: THREE.Vector3;
        center: THREE.Vector3;
        clockwise: boolean;
        control: THREE.Vector3;
    };
} | null;
export declare function recognizeFilletByArc(object: IStructureObject & WithMembers & WithChildren, tree: IStructureTree, sketchId: ObjectID): ExistingFilletInfo | null;
export {};
