import { BufferGeometry } from 'three';
import { Tuplet } from '../../types/common';
import { Curve3D } from './curve-3d';
export type RadiusModifier = {
    type: 'linear' | 'stepped';
    steps: Tuplet<number>[];
};
export type AttributeOptions = {
    computeNormals?: boolean;
    computeUvs?: boolean;
};
export type TubeGeometryOptions = AttributeOptions & {
    radialSegments?: number;
    from?: number;
    to?: number;
    startCap?: boolean;
    endCap?: boolean;
    radius?: number;
    segmentsPerMeter?: number;
    radiusModifier?: RadiusModifier;
    simplificationThreshold?: number;
    computeLengths?: boolean;
    computeRelativeLengths?: boolean;
    computeCurveNormals?: boolean;
    computeCurveTangents?: boolean;
    computeCurveBinormals?: boolean;
    innerRadius?: number;
    thickness?: number;
    addGroups?: boolean;
};
/**
 * Generates a fully customized tube geometry extruded from a curve.
 */
export declare function createTubeGeometry(curve: Curve3D, options?: TubeGeometryOptions): BufferGeometry<import('three').NormalBufferAttributes>;
