import { CADFiler } from "../../CADFiler";
import { PhysicalMaterialRecord } from "../../PhysicalMaterialRecord";
import { TemplateAction } from "../Action/TemplateAction";
import { TemplateRecord } from "../TemplateRecord";
import { TemplateParamType } from "./TemplateParamType";
/**
 * 模版参数
 */
export declare class TemplateParam {
    /**
     * 变量名称
     * 命名规范(同js) 并且 禁止前缀`_`,`$`.
     */
    name: string;
    /** 表达式 使用js引起求值(暂时) */
    expr: string | number;
    /**
     * 设置参数的值,通常在模版设计中可以这么干
     * 如果需要更新参数的动作,那么应该调用 UpdateParam
     */
    value: string | number;
    default: string | number;
    description: string;
    type: TemplateParamType;
    min: number;
    max: number;
    option: any[];
    actions: TemplateAction[];
    parent: TemplateRecord;
    isLock: boolean;
    MaterialValue: PhysicalMaterialRecord;
    constructor();
    WriteAllObjectRecord(): void;
    /**
     * private:仅供内部调用.
     * 更新参数值,并且触发动作.
     */
    UpdateParam(value: string | number): void;
    /**
     * 计算表达式的值并更新
     * @param vardefines 变量定义列表
     * @param paramMap 所有的参数列表.(可能我们需要依赖更新它)
     */
    EvalUpdate(vardefines: Object, paramMap: Map<string, TemplateParam>, evaled: Set<TemplateParam>, update?: boolean): number;
    ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=TemplateParam.d.ts.map