import { LayerStore } from "./Store";
import type { ILayerNode, INode } from "./Type";
/** 树的基础操作 */
export declare class TreeAction {
    /** 插入节点
     * @param {INode[]} nodes 节点数组
     * @param {INode} newNode 新节点
     * @param {number[]} indexs 索引数组(插入的位置)
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 在文件夹1下插入文件2
     * InsertNode(nodes, { name: "文件2" }, [1, 1]);
     * // returns [{name: "文件夹1", children: [{name: "文件1"}, {name: "文件2"}]}]
     */
    static InsertNode(nodes: INode[], newNode: INode, indexs: number[]): void;
    /** 删除节点
     * @param {INode[]} nodes 节点数组
     * @param {string} name 节点名称
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 删除文件1
     * RemoveNode(nodes, "文件1");
     * // returns [{name: "文件夹1", children: []}]
     */
    static RemoveNode(nodes: INode[], name: string): void;
    /** 修改节点
     * @param {INode[]} nodes 节点数组
     * @param {Function} Callback 回调函数(修改操作)
     * @param {Function} Predicate 条件函数(过滤操作)
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 修改文件1的名称
     * UpdateNode(nodes, node => node.name = "新文件1", node => node.name === "文件1");
     * // returns [{name: "文件夹1", children: [{name: "新文件1"}]}]
     */
    static UpdateNode(nodes: INode[], Callback: (node: INode) => void, Predicate?: (node: INode) => boolean): void;
    /** 找到某个节点
     * @param {INode[]} nodes 节点数组
     * @param {Function} Predicate 条件函数(过滤操作)
     * @returns {INode | undefined} 节点
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 找到文件1
     * FindNode(nodes, node => node.name === "文件1");
     * // returns {name: "文件1"}
     */
    static FindNode(nodes: INode[], Predicate: (node: INode) => boolean): INode | undefined;
    /** 通过ID找到某个节点的索引
     * @param {INode[]} nodes 节点数组
     * @param {string} id 节点ID
     * @returns {number[]} 索引数组
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 找到文件1的索引
     * FindIndexsByName(nodes, "文件1");
     * // returns [1, 0]
     */
    static FindIndexsByName(nodes: INode[], name: string): number[];
    /** 找到某些节点（打平父子结构
     * @param {INode[]} nodes 节点数组
     * @param {Function} Predicate 条件函数(过滤操作)
     * @returns {INode | undefined} 节点
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 找到文件1
     * FindNode(nodes, node => node.name === "文件1");
     * // returns {name: "文件1"}
     */
    static FindFlatNodes(nodes: INode[], Predicate: (node: INode) => boolean): INode[];
    /** 找到某些节点（保留父子结构且拷贝数据）
     * @param {INode[]} nodes 节点数组
     * @param {Function} Predicate 条件函数(过滤操作)
     * @returns {INode | undefined} 节点
     * @example
     * const nodes = [{name: "文件夹1", children: [{name: "文件1"}]}]
     * // 找到文件1
     * FilterNodes(nodes, node => node.name === "文件1");
     * // returns {name: "文件1"}
     */
    static FilterNodes(nodes: INode[], Predicate: (node: INode) => boolean): INode[];
}
/** 图层的基础操作 */
export declare class LayerAction {
    store: LayerStore;
    constructor(store: LayerStore);
    /** 设置当前图层 */
    SetCurrent(node: ILayerNode): void;
    /** 清楚所有图层的isCurrent属性 */
    ClearIsCurrent(): void;
    /** 清楚所有图层的visible属性 */
    ClearVisible(): void;
    /** 清楚所有图层的selected属性 */
    ClearSelected(): void;
    /** 清楚所有图层的changeable属性 */
    ClearChangeable(): void;
    /** 找到选中的图层 */
    FindNodeBySelected: () => ILayerNode;
    /** 根据名称过滤节点 */
    FindFlatNodesByName(name: String, isFuzzy?: boolean): ILayerNode[];
    /** 搜索图层 */
    SearchByName(name: String): void;
    /** 根据名称查找图层 */
    FindNodeByName: (name: string) => ILayerNode;
}
//# sourceMappingURL=Action.d.ts.map