import { Point3 } from './point3';
import { Vector3 } from './vector3';
import { Matrix44 } from './matrix44';
/**
 * A segment of a line.
 */
export declare class Segment {
    private _a;
    private _b;
    private _d;
    private static readonly TINY;
    /**
     * Copies a segment.
     * @param s the segment.
     */
    static FromSegment(s: Segment): Segment;
    constructor(a: Point3, b: Point3);
    /**
     * Endpoint A.
     */
    get a(): Point3;
    /**
     * Endpoint B.
     */
    get b(): Point3;
    /**
     * The vector from endpoint A to B.
     */
    get d(): Vector3;
    /**
     * The length of this segment.
     */
    get length(): number;
    /**
     * Returns a copy of this segment.
     */
    clone(): Segment;
    /**
     * Transforms this segment using matrix M.
     * @param m the matrix.
     */
    transform(m: Matrix44): void;
    /**
     * Tests this segment for intersection with the specified triangle.
     *
     * If such an intersection exists, this method returns the intersection
     * point.
     * @param xa x-coordinate of triangle vertex a.
     * @param ya y-coordinate of triangle vertex a.
     * @param za z-coordinate of triangle vertex a.
     * @param xb x-coordinate of triangle vertex b.
     * @param yb y-coordinate of triangle vertex b.
     * @param zb z-coordinate of triangle vertex b.
     * @param xc x-coordinate of triangle vertex c.
     * @param yc y-coordinate of triangle vertex c.
     * @param zc z-coordinate of triangle vertex c.
     * @returns the point of intersection; null, if none.
     */
    intersectWithTriangle(xa: number, ya: number, za: number, xb: number, yb: number, zb: number, xc: number, yc: number, zc: number): Point3;
}
