import { IComponentMeta as InnerComponentMeta, INode } from '@alilc/lowcode-designer';
import { IPublicTypeNodeData, IPublicTypeNodeSchema, IPublicModelComponentMeta, IPublicTypeI18nData, IPublicTypeIconType, IPublicTypeNpmInfo, IPublicTypeTransformedComponentMetadata, IPublicModelNode, IPublicTypeAdvanced, IPublicTypeFieldConfig } from '@alilc/lowcode-types';
import { componentMetaSymbol } from '../symbols';
import { ReactElement } from 'react';
export declare class ComponentMeta implements IPublicModelComponentMeta {
    private readonly [componentMetaSymbol];
    isComponentMeta: boolean;
    constructor(componentMeta: InnerComponentMeta);
    static create(componentMeta: InnerComponentMeta | null): IPublicModelComponentMeta | null;
    /**
     * 组件名
     */
    get componentName(): string;
    /**
     * 是否是「容器型」组件
     */
    get isContainer(): boolean;
    /**
     * 是否是最小渲染单元。
     * 当组件需要重新渲染时：
     *  若为最小渲染单元，则只渲染当前组件，
     *  若不为最小渲染单元，则寻找到上层最近的最小渲染单元进行重新渲染，直至根节点。
     */
    get isMinimalRenderUnit(): boolean;
    /**
     * 是否为「模态框」组件
     */
    get isModal(): boolean;
    /**
     * 元数据配置
     */
    get configure(): IPublicTypeFieldConfig[];
    /**
     * 标题
     */
    get title(): string | IPublicTypeI18nData | ReactElement;
    /**
     * 图标
     */
    get icon(): IPublicTypeIconType;
    /**
     * 组件 npm 信息
     */
    get npm(): IPublicTypeNpmInfo;
    /**
     * @deprecated
     */
    get prototype(): any;
    get availableActions(): any;
    get advanced(): IPublicTypeAdvanced;
    /**
     * 设置 npm 信息
     * @param npm
     */
    setNpm(npm: IPublicTypeNpmInfo): void;
    /**
     * 获取元数据
     * @returns
     */
    getMetadata(): IPublicTypeTransformedComponentMetadata;
    /**
     * check if the current node could be placed in parent node
     * @param my
     * @param parent
     * @returns
     */
    checkNestingUp(my: IPublicModelNode | IPublicTypeNodeData, parent: INode): boolean;
    /**
     * check if the target node(s) could be placed in current node
     * @param my
     * @param parent
     * @returns
     */
    checkNestingDown(my: IPublicModelNode | IPublicTypeNodeData, target: IPublicTypeNodeSchema | IPublicModelNode | IPublicTypeNodeSchema[]): boolean;
    refreshMetadata(): void;
}
