import { BufferGeometry } from 'three';
import { LinePoint } from "./LinePoint";
/**
 * This Tube geometry is similar to the TubeGeometry from three.js but
 * it draws the tube exactly like the given lines. It does not re-calculate
 * the segments using a curve, instead each point is exactly where it should be.
 * Also it provides an easy way to colorize each segment.
 *
 * TODO: As I searched for something like this quite some time without success, this
 * would be a good part to extract into another lib...
 */
export declare class LineTubeGeometry extends BufferGeometry {
    /**
     * Saves up to 4 linePoints to generate the model.
     * The oldest one get's dropped after generating as it's not needed anymore.
     */
    private pointsBuffer;
    private pointsLength;
    private readonly radialSegments;
    private vertices;
    private normals;
    private colors;
    private uvs;
    private indices;
    private segmentsRadialNumbers;
    constructor(radialSegments?: number);
    dispose(): void;
    add(point: LinePoint): void;
    finish(): void;
    pointsCount(): number;
    /**
     * Slices the rendered part of the line based on the passed start and end segments.
     * 0, this.pointsLength renders everything
     * @param start the starting segment
     * @param end the ending segment (excluding)
     */
    slice(start?: number, end?: number): void;
    private generateSegment;
    private generateIndices;
    private generateUVs;
    toJSON(): void;
    private getTangent;
    private computeFrenetFrames;
}
