import { INodeChildren } from '@alilc/lowcode-designer';
import { IPublicTypeNodeData, IPublicEnumTransformStage, IPublicModelNodeChildren, IPublicModelNode } from '@alilc/lowcode-types';
import { nodeChildrenSymbol } from '../symbols';
export declare class NodeChildren implements IPublicModelNodeChildren {
    private readonly [nodeChildrenSymbol];
    constructor(nodeChildren: INodeChildren);
    static create(nodeChildren: INodeChildren | null): IPublicModelNodeChildren | null;
    /**
     * 返回当前 children 实例所属的节点实例
     */
    get owner(): IPublicModelNode | null;
    /**
     * children 内的节点实例数
     */
    get size(): number;
    /**
     * @deprecated
     * 是否为空
     * @returns
     */
    get isEmpty(): boolean;
    /**
     * 是否为空
     * @returns
     */
    get isEmptyNode(): boolean;
    /**
     * @deprecated
     * judge if it is not empty
     */
    get notEmpty(): boolean;
    /**
     * judge if it is not empty
     */
    get notEmptyNode(): boolean;
    /**
     * 删除指定节点
     * delete the node
     * @param node
     */
    delete(node: IPublicModelNode): boolean;
    /**
     * 插入一个节点
     * @param node 待插入节点
     * @param at 插入下标
     * @returns
     */
    insert(node: IPublicModelNode, at?: number | null): void;
    /**
     * 返回指定节点的下标
     * @param node
     * @returns
     */
    indexOf(node: IPublicModelNode): number;
    /**
     * 类似数组 splice 操作
     * @param start
     * @param deleteCount
     * @param node
     */
    splice(start: number, deleteCount: number, node?: IPublicModelNode): IPublicModelNode[];
    /**
     * 返回指定下标的节点
     * @param index
     * @returns
     */
    get(index: number): IPublicModelNode | null;
    /**
     * 是否包含指定节点
     * @param node
     * @returns
     */
    has(node: IPublicModelNode): boolean;
    /**
     * 类似数组的 forEach
     * @param fn
     */
    forEach(fn: (node: IPublicModelNode, index: number) => void): void;
    /**
     * 类似数组的 reverse
     */
    reverse(): IPublicModelNode[];
    /**
     * 类似数组的 map
     * @param fn
     */
    map<T = any>(fn: (node: IPublicModelNode, index: number) => T): T[] | null;
    /**
     * 类似数组的 every
     * @param fn
     */
    every(fn: (node: IPublicModelNode, index: number) => boolean): boolean;
    /**
     * 类似数组的 some
     * @param fn
     */
    some(fn: (node: IPublicModelNode, index: number) => boolean): boolean;
    /**
     * 类似数组的 filter
     * @param fn
     */
    filter(fn: (node: IPublicModelNode, index: number) => boolean): any;
    /**
     * 类似数组的 find
     * @param fn
     */
    find(fn: (node: IPublicModelNode, index: number) => boolean): IPublicModelNode | null;
    /**
     * 类似数组的 reduce
     * @param fn
     */
    reduce(fn: (acc: any, cur: IPublicModelNode) => any, initialValue: any): void;
    /**
     * 导入 schema
     * @param data
     */
    importSchema(data?: IPublicTypeNodeData | IPublicTypeNodeData[]): void;
    /**
     * 导出 schema
     * @param stage
     * @returns
     */
    exportSchema(stage?: IPublicEnumTransformStage): any;
    /**
     * 执行新增、删除、排序等操作
     * @param remover
     * @param adder
     * @param sorter
     */
    mergeChildren(remover: (node: IPublicModelNode, idx: number) => boolean, adder: (children: IPublicModelNode[]) => any, originalSorter: (firstNode: IPublicModelNode, secondNode: IPublicModelNode) => number): void;
}
