import { Material, MeshStandardMaterial, Object3D } from "three";
import { RenderType } from "../../../../GraphicsSystem/RenderType";
import { CADFiler } from "../../../CADFiler";
import { CADObject } from "../../../CADObject";
import { Arc } from "../../../Entity/Arc";
import { Curve } from "../../../Entity/Curve";
import { Line } from "../../../Entity/Line";
import { Polyline } from "../../../Entity/Polyline";
import { ObjectId } from "../../../ObjectId";
import { PhysicalMaterialRecord } from "../../../PhysicalMaterialRecord";
import { RoomBase } from "../RoomBase";
import { RoomHolePolyline } from "./Hole/RoomHolePolyline";
import { WallSnapMode } from "./WallSnapMode";
export declare const CURVE_FACE_TYPE_KEY = "__CURVE_FACE_TYPE_KEY__";
export declare const CURVE_DIR_TYPE_KEY = "__CURVE_DIR_TYPE_KEY__";
export declare const CURVE_WALL_TYPE_KEY = "__CURVE_WALL_TYPE_KEY__";
export declare enum WallFaceType {
    Inside = 0,//内部
    Pillar = 1,//柱子
    Outside = 2
}
interface HoleData {
    StartParam: number;
    EndParam: number;
    Bottom: number;
    Top: number;
}
export declare abstract class RoomWallBase extends RoomBase {
    static SnapMode: WallSnapMode;
    RelevancyHoles: ObjectId<RoomHolePolyline>[];
    Holes: HoleData[];
    get RealHoles(): HoleData[];
    protected _Thickness: number;
    protected _Height: number;
    protected _HideOutside: boolean;
    set HideOutside(_hide: boolean);
    get Height(): number;
    set Height(_newHeight: number);
    get Thickness(): number;
    set Thickness(t: number);
    get CenterAxisCurve(): Arc | Line;
    UpdateCurve(cu: Curve): void;
    LeftCurves: (Arc | Line)[];
    RightCurves: (Arc | Line)[];
    LidCurves: (Arc | Line)[];
    Region: Polyline;
    OverWriteMaterial: Map<number, ObjectId<PhysicalMaterialRecord>>;
    UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void;
    IsMtlLockAtSlot(slotIndex: number): boolean;
    SetMaterialAtSlot(mtl: ObjectId<PhysicalMaterialRecord>, slotIndex: number): void;
    SetAllMaterialAtSlot(mtl: ObjectId<PhysicalMaterialRecord>): void;
    GetMtlLockedStatus(): {
        partMtlLocked: boolean;
        allMtlLocked: boolean;
    };
    GetPhyMtlRecords(containErased?: boolean): PhysicalMaterialRecord[];
    protected get MeshMaterial(): MeshStandardMaterial | import("three").MeshBasicMaterial;
    private _GetValidOWMtl;
    get MeshMaterials(): Material[];
    ResetSign(oldSign: Map<number, number>, newSign: Map<number, number>, allChange?: boolean, isLid?: boolean): void;
    CopyFrom(obj: CADObject): void;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//@ts-ignore
export interface RoomWallBase extends RoomBase, Curve {
}
export declare const CURVE_MESH_NAMES: string[];
export declare function applyMixins(derivedCtor: any, constructor: any, methons?: string[]): void;
export {};
//# sourceMappingURL=RoomWallBase.d.ts.map