import { Box3, Material, Matrix3, Matrix4, Object3D, Shape, Vector3 } from 'three';
import { Status } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { Box3Ext } from '../../Geometry/Box';
import { IntersectOption, IntersectResult } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Curve } from './Curve';
export declare class Line extends Curve {
    private _StartPoint;
    private _EndPoint;
    constructor(_StartPoint?: Vector3, _EndPoint?: Vector3);
    get Is2D(): boolean;
    get Shape(): Shape;
    Z0(): this;
    protected ApplyScaleMatrix(m: Matrix4): this;
    protected ApplyMirrorMatrix(m: Matrix4): this;
    InitDrawObject(renderType?: RenderType): Object3D;
    /**
     * 重载:更新绘制的实体
     * @param {RenderType} type
     * @param {Object3D} obj
     */
    UpdateDrawObject(type: RenderType, obj: Object3D): void;
    UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void;
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform: Matrix3): Vector3[];
    GetGripPoints(): Vector3[];
    MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
    GetStretchPoints(): Array<THREE.Vector3>;
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    GetFirstDeriv(param: number | Vector3): Vector3;
    /**
     * 需要注意的是,平行线和共线无交点
     * @param curve
     * @param intType
     * @param [tolerance=1e-4]
     * @returns
     */
    IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): IntersectResult[];
    GetPointAtParam(param: number): Vector3;
    GetParamAtPoint(pt: Vector3, fuzz?: number): number;
    GetParamAtDist(d: number): number;
    GetPointAtDistance(distance: number): Vector3;
    GetDistAtParam(param: number): number;
    GetDistAtPoint(pt: Vector3): number;
    GetSplitCurves(param: number[] | number): Curve[];
    GetParamAtPoint2(pt: Vector3): number;
    PtOnCurve3(p: Vector3, fuzz?: number): boolean;
    GetClosestAtPoint(pt: Vector3, extend: boolean): {
        closestPt: Vector3;
        param: number;
    };
    GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
    Extend(newParam: number): void;
    Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status;
    Reverse(): this;
    GetOffsetCurves(offsetDist: number): Array<Line>;
    get BoundingBox(): Box3;
    /**
     * 返回对象在自身坐标系下的Box
     */
    get BoundingBoxInOCS(): Box3Ext;
    get StartParam(): number;
    get EndParam(): number;
    get Length(): number;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
    set StartPoint(p: Vector3);
    get StartPoint(): Vector3;
    get StartPointInOcs(): Vector3;
    get EndPointInOcs(): Vector3;
    get EndPoint(): Vector3;
    set EndPoint(p: Vector3);
    SetStartEndPoint(s: Vector3, e: Vector3): void;
}
//# sourceMappingURL=Line.d.ts.map