import { LEVEL_ENUM, Vertex, Entity, Schema, ActionOptions } from '..';
export interface Display {
    readonly inDetail: boolean;
    readonly inFilter: boolean;
    readonly inForm: boolean;
    readonly inTable: boolean;
}
/**
 * 实体属性类
 */
export declare class EntityProperty extends Vertex implements Schema {
    /**
     * 概念类型
     */
    level: LEVEL_ENUM;
    /**
     * Id
     */
    readonly id: string;
    /**
     * 名称
     */
    readonly name: string;
    /**
     * 标题
     */
    readonly label: string;
    /**
     * 描述
     */
    readonly description: string;
    /**
     *  type
     */
    readonly type: string;
    /**
     * 数据格式
     */
    readonly format: string;
    /**
     * 是否必须
     */
    readonly required: boolean;
    /**
     * 数据类型
     */
    readonly $ref: string;
    /**
     * 数据结构Id
     */
    readonly $refId: string;
    /**
     * 引用关系（多对一、一对多等）
     */
    readonly relationship: string;
    /**
     * 规则
     */
    readonly rules: Array<string>;
    /**
     * UI 展示
     */
    readonly display: Display;
    /**
     * 默认值
     */
    readonly defaultValue: string | boolean | number;
    /**
     * 是否为主键
     */
    readonly primaryKey: boolean;
    /**
     * 父级 Id
     */
    readonly entityId: string;
    /**
     *  父级引用
     */
    root: Entity;
    /**
     * 节点是否为叶子节点
     * 前端 UI 状态
     */
    isLeaf: boolean;
    /**
     * 周边存在的名称
     */
    existingNames: Array<string>;
    /**
     * 数据类型Key，例子："/#basicType/String"，在前端使用
     */
    readonly typeKey: string;
    /**
     * 外键引用实体
     */
    readonly $relationEntity: string;
    /**
     * 外键引用实体字段
     */
    readonly $relationProperty: string;
    /**
     * 外键删除规则
     */
    readonly relationDelRule: string;
    /**
     * 上一版本规则
     */
    readonly lastVersion: EntityProperty;
    /**
     * @param source 需要合并的部分参数
     */
    constructor(source?: Partial<EntityProperty>);
    /**
     * 添加实体属性
     */
    create(none?: void, actionOptions?: ActionOptions): Promise<this>;
    /**
     * 删除实体属性
     */
    delete(none?: void, actionOptions?: ActionOptions): Promise<void>;
    /**
     * 修改实体属性
     */
    update(none?: void, actionOptions?: ActionOptions, then?: () => Promise<any>): Promise<this>;
    /**
     * 设置实体属性名称
     * @param name 名称
     */
    setName(name: string): Promise<void>;
    /**
     * 设置实体属性标题
     * @param label 标题
     */
    setLabel(label: string): Promise<void>;
    /**
     * 设置实体属性描述
     * @param description 描述
     */
    setDescription(description: string): Promise<void>;
    /**
     * 查找schema 顶点被引用的逻辑顶点列表
     */
    getSchemaUsage(): Promise<any>;
    /**
     * 设置实体属性的数据类型
     */
    setDataType(schema: Schema): Promise<void>;
    /**
     * 设置实体属性关系
     */
    setRelationship(relationship: string): Promise<void>;
    /**
     * 设置实体属性外键
     * reference: {$relationEntity, $relationProperty}
     */
    setReference(reference: any): Promise<void>;
    /**
     * 清除实体属性外键
     */
    clearReference(): Promise<void>;
    setRelationDelRule(relationDelRule: string): Promise<void>;
    setRules(rules: any): Promise<void>;
    /**
     * 设置实体属性的默认值
     */
    setDefaultValue(defaultValue: string): Promise<void>;
    /**
     * 设置实体属性是否必须
     * @param required 必须
     */
    setRequired(required: boolean): Promise<void>;
    setDisplay(display: Display): Promise<void>;
    /**
     * 移动位置
     * @param index 目标位置
     */
    moveTo(index: number, oldIndex?: number): Promise<void>;
    /**
     * 上移实体属性
     */
    moveUp(): Promise<void>;
    /**
     * 属性下移
     */
    moveDown(): Promise<void>;
    /**
    * 只更改Entity Property的名称
    */
    updateLogicParamsForName(entity: Entity, property: EntityProperty): Promise<void>;
}
export default EntityProperty;
