import { Frustum, Matrix3, Matrix4, Object3D, Vector3 } from "three";
import { Status } from "../../Common/Status";
import { ObjectSnapMode } from "../../Editor/ObjectSnapMode";
import { Box3Ext } from "../../Geometry/Box";
import { IntersectOption } from "../../GraphicsSystem/IntersectWith";
import { RenderType } from "../../GraphicsSystem/RenderType";
import { CADFiler } from "../CADFiler";
import { LayerTableRecord } from "../LayerTableRecord";
import { ObjectId } from "../ObjectId";
import { Arc } from "./Arc";
import { Curve } from "./Curve";
import { Entity } from "./Entity";
import { Line } from "./Line";
import { LineType } from "./LineType";
export declare class Curve3d extends Curve {
    constructor();
    Entitys: (Line | Arc)[];
    private _ClosedMark;
    get IsClose(): boolean;
    get CloseMark(): boolean;
    set CloseMark(v: boolean);
    get LineType(): LineType;
    set LineType(lineType: LineType);
    /**
    * 返回对象在自身坐标系下的Box
    */
    get BoundingBoxInOCS(): Box3Ext;
    get Length(): number;
    get StartPoint(): Vector3;
    get EndPoint(): Vector3;
    get StartParam(): number;
    get EndParam(): number;
    UpdateJigMaterial(color?: number): void;
    RestoreJigMaterial(): void;
    Reverse(): this;
    GetPointAtParam(param: number): Vector3;
    GetParamAtDist(dist: number): number;
    GetEntitysAtPoint(point: Vector3): Entity[];
    GetCurveAtParam(param: number): Curve;
    GetParamAtPoint(pt: Vector3, fuzz?: number): number;
    GetSplitCurves(param: number[] | number): Array<Curve>;
    Extend(newParam: number): void;
    IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
    GetFirstDeriv(param: number | Vector3): Vector3;
    GetCurveParamAtParam(param: number): number;
    Join(cu: Curve): Status.False | Status.True;
    Explode(): (Line | Arc)[];
    Traverse(callback: (arg0: Entity) => void): void;
    InitDrawObject(renderType?: RenderType): Object3D;
    UpdateDrawObject(renderType: RenderType, obj: Object3D): void;
    get ColorIndex(): number;
    set ColorIndex(color: number);
    get Layer(): ObjectId<LayerTableRecord>;
    set Layer(id: ObjectId<LayerTableRecord>);
    ApplyMatrix(m: Matrix4): this;
    /**
    *
    * @param snapMode 捕捉模式(单一)
    * @param pickPoint const
    * @param lastPoint const
    * @param viewXform const 最近点捕捉需要这个变量
    * @returns object snap points
    */
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3, frustum?: Frustum): Vector3[];
    GetGripPoints(): Array<Vector3>;
    MoveGripCurveStartEndPoint(ent: Curve, index: number, vec: Vector3): void;
    MoveGripPoints(indexList: number[], vec: Vector3): void;
    GetStretchPoints(): Array<Vector3>;
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    CloneDrawObject(from: this): void;
    ApplyMirrorMatrix(m: Matrix4): this;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Curve3d.d.ts.map