import type { OriginalTreeData, StringOrNumber, ReplaceFieldsOptions, SearchNodeMethodType } from "./tree.type";
import type { Nullable } from "../../types";
type CustomKey = string | number;
type CustomString = (() => string) | string;
export interface TreeData {
    id: CustomKey;
    title: CustomString;
    children: TreeData[];
    parentKey: Nullable<StringOrNumber>;
    isRoot: boolean;
    visible: boolean;
    isChecked: boolean;
    isDisabled: boolean;
    isLeaf: boolean;
    isLazy: boolean;
    isLoading: boolean;
    hasNextSibling: boolean;
    parentNode: Nullable<TreeData>;
    [key: string]: any;
}
interface TreeConfig {
    checkStrictly: boolean | string;
    showCheckbox: boolean;
    checkedKeys: StringOrNumber[];
    expandKeys: StringOrNumber[];
    nodeMap: Map<StringOrNumber, TreeData>;
    originMap: Map<StringOrNumber, OriginalTreeData>;
    replaceFields: ReplaceFieldsOptions;
    defaultExpandAll: boolean;
    lazy: boolean;
    searchNodeMethod: SearchNodeMethodType;
}
declare class Tree {
    protected config: TreeConfig;
    protected treeData: TreeData[];
    constructor(config: TreeConfig, origin: OriginalTreeData | OriginalTreeData[]);
    init(origin: OriginalTreeData | OriginalTreeData[]): void;
    createTree(origin: OriginalTreeData | OriginalTreeData[], parentKey?: StringOrNumber): TreeData[];
    getNode(origin: OriginalTreeData, parentKey: StringOrNumber, hasNextSibling: boolean): TreeData;
    treeForeach(tree: TreeData[], func: Function): void;
    setCheckedKeys(checked: boolean, checkStrictly: boolean | string, node: TreeData): void;
    setParentChecked(parent: TreeData): void;
    setChildrenChecked(checked: boolean, nodes: TreeData[]): boolean;
    getData(): TreeData[];
    getKeys(): {
        checkedKeys: StringOrNumber[];
        expandKeys: any[];
    };
    getOriginData(key: StringOrNumber): OriginalTreeData;
    _filter(value: string): void;
}
export { Tree };
