import { Box3, BufferGeometry, Material, Matrix3, Matrix4, Object3D, Side, Vector3 } from 'three';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { BoolOpeartionType } from '../../GraphicsSystem/BoolOperateUtils';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Shape } from '../Shape';
import { ShapeManager } from '../ShapeManager';
import { Curve } from './Curve';
import { Entity } from './Entity';
export declare class Region extends Entity {
    private _ShapeManager;
    static CreateFromCurves(cus: Curve[] | (Curve[])[]): Region | undefined;
    private _FaceSide;
    get FaceSide(): Side;
    set FaceSide(v: Side);
    GetShapeList(): Shape[];
    SetShapeList(shapes: Shape[]): void;
    constructor(_ShapeManager?: ShapeManager);
    get ShapeManager(): ShapeManager;
    get Area(): number;
    get BoundingBox(): Box3;
    Explode(): Curve[] | Region[];
    UpdateShapeList(): void;
    /**
     * 对于布尔操作,这个将会变换内部轮廓到对方坐标系.
     * 并且这个变换不会更新图形绘制.
     * @param {Matrix4} m
     * @memberof Region
     */
    ShapeApplyMatrix(m: Matrix4): void;
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
    GetGripPoints(): Array<Vector3>;
    MoveGripPoints(indexList: number[], moveVec: Vector3): void;
    GetStretchPoints(): Vector3[];
    MoveStretchPoints(indexList: Array<number>, moveVec: Vector3): void;
    ApplyMatrix(m: Matrix4): this;
    get Position(): Vector3;
    set Position(pt: Vector3);
    protected ApplyScaleMatrix(m: Matrix4): this;
    Z0(): this;
    MatrixPlanarizere(): this;
    protected ApplyMirrorMatrix(m: Matrix4): this;
    /**
     * 请注意:该计算会操作otherRegion的矩阵
     * @param {Region} otherRegion
     * @param {BoolOpeartionType} boolType
     */
    BooleanOper(otherRegion: Region, boolType: BoolOpeartionType): boolean;
    private _MeshGeometry;
    get MeshGeometry(): BufferGeometry;
    private _EdgeGeometry;
    private get EdgeGeometry();
    private UpdateGeometry;
    UpdateDrawGeometry(): void;
    ClearDraw(): this;
    InitDrawObject(renderType?: RenderType): Object3D;
    UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
    /**
    * 当实体需要被更新时,更新实体材质
    */
    UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Region.d.ts.map