import type { ObjectField } from '@formily/core'; import type { JSXComponent, Schema } from '@formily/react'; import { Button } from 'antd'; import React from 'react'; import type { NodeLike, NodePos } from './scope'; import { NodeScope, RootScope, useHelper, useNode, useRoot } from './scope'; declare type PosLike = string | number[]; export interface ITreeBaseRootProps extends React.ComponentProps { disabled?: boolean; onAdd?: (pos: NodePos, child: NodeLike, parent: NodeLike, root: NodeLike) => void | Promise; onCopy?: (pos: NodePos, node: NodeLike, parent: NodeLike, root: NodeLike) => void | Promise; onRemove?: (pos: NodePos, node: NodeLike, parent: NodeLike, root: NodeLike) => void | Promise; onMove?: (before: NodePos, after: NodePos, root: NodeLike) => void | Promise; } export interface ITreeBaseRootContext { props: ITreeBaseRootProps; field: ObjectField; schema: Schema; } declare type AntdButtonProps = React.ComponentProps; export interface ITreeBaseNodeProps extends Pick, 'getNode' | 'getExtra'> { pos: (root: NodeLike) => NodePos; } export declare type TreeBaseMixins = { Append?: React.FC NodeLike; }>; Copy?: React.FC NodeLike; }>; Remove?: React.FC; Move?: React.FC; Pos?: React.FC<{ pos?: PosLike; }>; useTree?: typeof useTree; useRoot?: typeof useRoot; useHelper?: typeof useHelper; useNode?: typeof useNode; usePos?: typeof usePos; }; export declare const useTree: () => ITreeBaseRootContext | null; export declare const usePos: (posLike?: PosLike) => number[] | undefined; declare type ComposedTreeBase = React.FC> & TreeBaseMixins & { Node?: React.FC>; mixin?: (target: T) => T & TreeBaseMixins; }; export declare const TreeBase: React.FC> & TreeBaseMixins & { Node?: React.FC> | undefined; mixin?: ((target: T) => T & TreeBaseMixins) | undefined; } & Required; export { getHelper as getTreeHelper } from './helper';