import { Matrix3, Matrix4, Shape, Vector3 } from 'three';
import { Status } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { CADFiler } from '../CADFiler';
import { Curve } from './Curve';
import { Polyline } from './Polyline';
export declare class Ellipse extends Curve {
    private _radX;
    private _radY;
    private _rotate;
    private _startAngle;
    private _endAngle;
    constructor(center?: Vector3, radX?: number, radY?: number, angle?: number);
    get StartParam(): number;
    get EndParam(): number;
    get StartPoint(): Vector3;
    get EndPoint(): Vector3;
    get Shape(): Shape;
    get IsClose(): boolean;
    get Center(): Vector3;
    set Center(v: Vector3);
    get RadX(): number;
    set RadX(v: number);
    get RadY(): number;
    set RadY(v: number);
    get Rotation(): number;
    set Rotation(v: number);
    get StartAngle(): number;
    get EndAngle(): number;
    set StartAngle(v: number);
    set EndAngle(v: number);
    get Length(): number;
    get Area(): number;
    get TotalAngle(): number;
    protected ApplyScaleMatrix(m: Matrix4): this;
    Extend(newParam: number): void;
    PtInCurve(pt: Vector3): boolean;
    PtOnCurve(pt: Vector3): boolean;
    PtOnEllipse(pt: Vector3): boolean;
    GetPointAtParam(param: number): Vector3;
    GetParamAtPoint(pt?: Vector3): number;
    GetPointAtDistance(distance: number): Vector3;
    GetDistAtParam(param: number): number;
    GetDistAtPoint(pt: Vector3): number;
    GetParamAtDist(d: number): number;
    GetAngleAtParam(param: number): number;
    GetCircleAngleAtPoint(pt: Vector3): number;
    GetFirstDeriv(pt: number | Vector3): Vector3;
    GetClosestPointTo(p: Vector3, extend: boolean): Vector3;
    GetOffsetCurves(offsetDist: number): this[];
    GetSplitCurves(param: number[] | number): this[];
    Join(el: Ellipse): Status.False | Status.True;
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
    IntersectWith2(curve: Curve, intType: IntersectOption): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
    GetStretchPoints(): Array<Vector3>;
    GetGripPoints(): Array<Vector3>;
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
    Convert2Polyline(count?: number): Polyline;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Ellipse.d.ts.map