import { LitElement, TemplateResult } from 'lit-element';
interface TreeNodeData {
    name?: string;
    key?: string | number | undefined;
    close?: boolean;
    parentKey?: string | number | undefined;
    seqNo?: number;
    icon?: string;
    child?: TreeNodeData[];
    closeable?: boolean;
    orginalData?: TreeNodeData;
}
interface TreeNodeRender {
    (data: TreeNodeData): TemplateResult;
}
declare const defaultNodeRender: (data: TreeNodeData) => TemplateResult;
interface TreeFilter {
    (data: TreeNodeData, ...args: any): boolean;
}
declare const defaultFilter: TreeFilter;
/**
 * 将数组对象转化为 root 子节点，包括所有下级节点
 * @param nodeList
 * @param root 如果为空，会创建一个虚拟的根{name:'@ROOT' ,key:undefined }
 * @returns 返回根节点
 */
declare const listToTreeData: (nodeList: TreeNodeData[], rootKey?: string | number) => TreeNodeData;
declare const findDataByKey: (data: TreeNodeData, key: string | number) => TreeNodeData;
declare class PTreeNode extends LitElement {
    nodeRender: TreeNodeRender;
    data: TreeNodeData;
    name: string;
    icon: string;
    close: boolean;
    closeable: boolean;
    attributeChangedCallback(name: string, old: string, value: string): void;
    private _fireNodeEvent;
    static get styles(): import("lit-element").CSSResult;
    get subNodeSize(): number;
    toogleNode(event: Event): void;
    updateNodeDistance(): void;
    render(): TemplateResult;
    private _clickNode;
}
declare class PTree extends LitElement {
    static get styles(): import("lit-element").CSSResult;
    startKey: string | number;
    includeStartNode: boolean;
    rootCloseable: boolean;
    filterString: string;
    data: TreeNodeData;
    filterFn: TreeFilter;
    nodeRender: TreeNodeRender;
    constructor();
    get filterData(): TreeNodeData;
    get allTreeNode(): PTreeNode[];
    private _observer;
    firstUpdated(): void;
    get startNode(): TreeNodeData;
    renderNode(d: TreeNodeData, tree: PTree): TemplateResult;
    private _fireNodeEvent;
    private _nodeHandler;
    renderSubNode(d: TreeNodeData, tree: PTree): TemplateResult | Array<TemplateResult>;
    render(): TemplateResult;
    updateNodeDistance(): void;
    _getUpdateComplete(): Promise<void>;
    attributeChangedCallback(name: string, old: string, newval: string): void;
    disconnectedCallback(): void;
}
export { PTreeNode, PTree, defaultFilter, defaultNodeRender, findDataByKey, listToTreeData };
//# sourceMappingURL=PTree.d.ts.map