/**
 * Geometric construction: circles, arcs, revolved/extruded/swept surfaces.
 * Implements algorithms from "The NURBS Book" Chapters 7-8.
 */
import type { CurveData, SurfaceData, SolidData } from "./types";
/**
 * Create a NURBS arc (rational quadratic Bézier segments).
 * Algorithm: split arc into segments of ≤90°, each a rational quadratic
 * with weight = cos(halfAngle).
 */
export declare function createArc(center: number[], xaxis: number[], yaxis: number[], radius: number, startAngle: number, endAngle: number): CurveData;
/**
 * Create a full NURBS circle.
 */
export declare function createCircle(center: number[], xaxis: number[], yaxis: number[], radius: number): CurveData;
/**
 * Create a NURBS elliptical arc.
 * xaxis and yaxis define the semi-axes (their lengths are the radii).
 */
export declare function createEllipseArc(center: number[], xaxis: number[], yaxis: number[], startAngle: number, endAngle: number): CurveData;
/**
 * Create a full NURBS ellipse.
 */
export declare function createEllipse(center: number[], xaxis: number[], yaxis: number[]): CurveData;
/**
 * Create a cylindrical surface.
 */
export declare function createCylindricalSurface(axis: number[], xaxis: number[], base: number[], height: number, radius: number): SurfaceData;
/**
 * Create an extruded surface by translating a profile curve along a direction.
 * Degree 1 in the extrusion direction.
 */
export declare function createExtrudedSurface(profile: CurveData, direction: number[]): SurfaceData;
/**
 * Create a surface of revolution by rotating a profile curve around an axis.
 */
export declare function createRevolvedSurface(profile: CurveData, center: number[], axis: number[], angle: number): SurfaceData;
/**
 * Create a swept surface by translating a profile along a rail.
 * Simple translational sweep: at each rail point, place the profile.
 */
export declare function createSweptSurface(profile: CurveData, rail: CurveData): SurfaceData;
/**
 * Create a box solid with 6 planar faces.
 */
export declare function createBoxSolid(dx: number, dy: number, dz: number, origin?: [number, number, number]): SolidData;
/**
 * Create a cylinder solid: 1 cylindrical face + 2 circular disk caps.
 */
export declare function createCylinderSolid(radius: number, height: number, axis?: [number, number, number], origin?: [number, number, number]): SolidData;
/**
 * Create a sphere solid: 1 revolved surface.
 */
export declare function createSphereSolid(radius: number, center?: [number, number, number]): SolidData;
