import { Material, Matrix3, Matrix4, Object3D, Vector3 } from 'three';
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 { Shape2 } from '../Shape2';
import { Arc } from './Arc';
import { Curve } from './Curve';
import { DragPointType } from './DragPointType';
export declare class Circle extends Curve {
    constructor(center?: Vector3, radius?: number);
    private _Radius;
    get Shape(): Shape2;
    get Center(): Vector3;
    set Center(v: Vector3);
    get Radius(): number;
    set Radius(v: number);
    protected ApplyScaleMatrix(m: Matrix4): this;
    protected ApplyMirrorMatrix(m: Matrix4): this;
    get StartPoint(): Vector3;
    get StartParam(): number;
    get EndPoint(): Vector3;
    get EndParam(): number;
    PtInCurve(pt: Vector3): boolean;
    get Area(): number;
    get Area2(): number;
    get Length(): number;
    get IsClose(): boolean;
    get IsClockWise(): boolean;
    GetPointAtParam(param: number): Vector3;
    GetPointAtDistance(distance: number): Vector3;
    GetDistAtParam(param: number): number;
    GetDistAtPoint(pt: Vector3): number;
    GetParamAtDist(d: number): number;
    GetSplitCurves(param: number[] | number): Arc[];
    GetParamAtPoint(pt?: Vector3): number;
    PtOnCurve(pt: Vector3): boolean;
    GetOffsetCurves(offsetDist: number): Curve[];
    IntersectWith2(curve: Curve, intType: IntersectOption): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
    get BoundingBox(): Box3Ext;
    InitDrawObject(renderType?: RenderType): Object3D;
    UpdateDrawObject(type: RenderType, obj: Object3D): void;
    UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material: Material): Object3D;
    GetDragPointCount(drag: DragPointType): number;
    GetGripPoints(): Array<Vector3>;
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
    MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
    GetStretchPoints(): Array<Vector3>;
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    GetFistDeriv(pt: number | Vector3): Vector3;
    GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Circle.d.ts.map