import { Vector3 } from "three";
import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse";
import { INeedUpdateParams } from "../../UI/Components/Template/TemplateComponent";
import { Board } from "../Entity/Board";
import { Entity } from './../Entity/Entity';
import { TemplateAction } from "./Action/TemplateAction";
import { TemplateFilletAction } from "./Action/TemplateFilletAction";
import { TemplateRecord } from "./TemplateRecord";
/**
 * 得到最深处的模块节点
 */
export declare function GetDeepestTemplate(brs: Entity[]): TemplateRecord | undefined;
/**
 * 获得模块的尺寸
 */
export declare function GetTempateSize(template: TemplateRecord): Vector3;
export declare function GetTempateBoards(template: TemplateRecord): Board[];
export declare function GetTempateEntitys(template: TemplateRecord): Entity[];
/**
 * 初始化模块
 *
 * 如果所有板件都在同一个模块, 那么传回原先的模块(或生成新模块)
 * 如果所有板件都不在模块中,那么生成新模块.
 * 如果板件在不同的模块中,那么询问用户是否生成新模块.
 *
 * @param ents 板件列表
 * @returns 模块记录
 */
export declare function InitTemplate(ents: Entity[]): Promise<TemplateRecord | undefined>;
/**
 * 使用板件更新模块的尺寸
 */
export declare function UpdateTemplateSizeOffBoards(template: TemplateRecord): void;
/**
 * 设置模块坐标系
 *
 * 通常需要调用一下`UpdateTemplateSizeOffBoards`
 */
export declare function SetTempateCoordinate(template: TemplateRecord): Promise<void>;
/**
 * 初始化模块的大小动作
 *
 * 应该已经传入正确的模块大小
 * 应该先判断是否存在动作,如果有,则清空它.
 * @param template
 * @param [useScaleBox=true] 使用比例盒子拉伸动作?如果`=false`则使用夹点拉伸动作.
 */
export declare function InitTempateSizeActions(template: TemplateRecord, useScaleBox?: boolean): void;
/**
 * 初始化模块的板厚动作
 *
 * 如果已经存在动作,则会清空旧的动作.
 * @param template
 * @param [autoCalculate=true] 自动计算板厚的变化方向,如果为否则交给用户选择
 */
export declare function InitTempateBoardThicknessActions(template: TemplateRecord, autoCalculate?: boolean): Promise<void>;
/**
 * 对指定的板厚动作方向进行修改
 *
 * 大量抄自动初始化板厚动作的代码
 */
export declare function UpdateTempateBoardThicknessAction(template: TemplateRecord): Promise<void>;
/**
 * 增加拉伸动作
 *
 * 返回动作,并不会直接加入到模块中,可以设置完动作属性在加入
 * @param [useScaleBox=false] 使用比例盒子,否则使用夹点拽拖
 */
export declare function AddStretchAction(template: TemplateRecord, useScaleBox?: boolean): Promise<TemplateAction>;
/**
 * 增加倒角动作
 *
 * 动作不会直接加到模块中,需要修改动作的参数后在加入
 * @param template
 * @returns
 */
export declare function AddFilletAction(template: TemplateRecord): Promise<TemplateFilletAction | undefined>;
/**
 * 上传模块
 * @param template 模块
 * @param directoryId 目录id
 * @returns 成功?
 */
export declare function UploadTemplate(template: TemplateRecord, directoryId: string): Promise<boolean>;
/**
 * 上传更新模块
 * @param template 模块
 * @param templateId 模块的id
 * @returns 成功?
 */
export declare function UploadUpdateTemplate(template: TemplateRecord, templateId: string): Promise<boolean>;
/**
 * 删除模块节点,同时会删除其子节点
 */
export declare function DeleteTempate(template: TemplateRecord): void;
export declare function CheckTempalteParamName(name: string, nameSet: Set<string>): boolean;
export declare function GetOnlineTemplate(tid: string, props?: INeedUpdateParams[]): Promise<TemplateRecord>;
export declare function EditorOnlineTemplate(template: TemplateRecord, module_id: string, isCheck: boolean): Promise<void>;
/**仅移除模块节点 */
export declare function RemoveTemplate(temp: TemplateRecord): void;
/**
 * 模块替换
 * @param oldTemp
 * @param newTemp
 * @param [reSelectSpace=true]
 * @param [extendExpr=true] 继承被替换模块的表达式,默认总是继承,仅当我们拾取空间到虚拟空间时,不继承变量,因为我们需要使用全新变量.
 */
export declare function ReplaceTemplate(oldTemp: TemplateRecord, newTemp: TemplateRecord, reSelectSpace?: boolean, extendExpr?: boolean): Promise<void>;
/**
 * 删除当前模块节点
 */
export declare function DeleteCurrentTempate(template: TemplateRecord): void;
export declare function SetTemplatePositionAndSetParent(spaceParse: ISpaceParse, template: TemplateRecord, isAddDeepNode?: boolean): Promise<void>;
//# sourceMappingURL=TempateUtils.d.ts.map