export declare type Key = string | number; export declare type CheckStrategy = 'all' | 'child' | 'parent'; export interface RawNode { key?: Key; children?: RawNode[]; isLeaf?: boolean; disabled?: boolean; [key: string]: unknown; } export interface KeyedRawNode { key: Key; children?: KeyedRawNode[]; isLeaf?: boolean; disabled?: boolean; [key: string]: unknown; } export interface GetPrevNextOptions { loop?: boolean; includeDisabled?: boolean; } export interface TreeNode { key: Key; rawNode: R | G | I; level: number; index: number; isFirstChild: boolean; isLastChild: boolean; parent: TreeNode | null; isLeaf: boolean; isGroup: boolean; ignored: boolean; shallowLoaded: boolean; disabled: boolean; siblings: Array>; children?: Array>; getPrev: (options?: GetPrevNextOptions) => TreeNode | null; getNext: (options?: GetPrevNextOptions) => TreeNode | null; getParent: () => TreeNode | null; getChild: () => TreeNode | null; contains: (treeNode: TreeNode | null | undefined) => boolean; } export declare type TreeNodeMap = Map>; export declare type LevelTreeNodeMap = Map>>; export interface MergedKeys { checkedKeys: Key[]; indeterminateKeys: Key[]; } export declare type GetChildren = (node: R | G | I) => Array | unknown; export interface TreeMateOptions { ignoreEmptyChildren?: boolean; getChildren?: GetChildren; getKey?: (node: R | G | I) => Key; getDisabled?: (node: R | G | I) => boolean; getIsGroup?: (node: R | G | I) => boolean; getIgnored?: (node: R | G | I) => boolean; } export interface MergedPath { keyPath: Key[]; treeNodePath: Array>; treeNode: TreeNode | null; } export interface GetPathOptions { includeGroup?: T; includeSelf?: boolean; } export interface InputMergedKeys { checkedKeys?: Key[] | null; indeterminateKeys?: Key[] | null; } export interface CheckOptions { cascade?: boolean; checkStrategy?: CheckStrategy; allowNotLoaded?: boolean; /** @deprecated */ leafOnly?: boolean; } declare type KeyToNode = (key: T) => T extends null | undefined ? null : TreeNode | null; declare type KeyToNonGroupNode = (key: T) => T extends null | undefined ? null : TreeNode | null; declare type KeyToNonGroupNodeWithOptions = (key: T, options?: GetPrevNextOptions) => T extends null | undefined ? null : TreeNode | null; export interface GetNonLeafKeysOptions { preserveGroup?: boolean; } export interface TreeMate { treeNodes: Array>; treeNodeMap: TreeNodeMap; levelTreeNodeMap: LevelTreeNodeMap; /** start from 0 */ maxLevel: number; getFlattenedNodes: (expandedKeys?: Key[]) => Array>; getNode: KeyToNode; getChildren: GetChildren; getCheckedKeys: (checkedKeys: Key[] | InputMergedKeys | null | undefined, options?: CheckOptions) => MergedKeys; check: (keysToCheck: Key | Key[] | null | undefined, checkedKeys: Key[] | InputMergedKeys, options?: CheckOptions) => MergedKeys; uncheck: (keysToUncheck: Key | Key[] | null | undefined, checkedKeys: Key[] | InputMergedKeys, options?: CheckOptions) => MergedKeys; getNonLeafKeys: (options?: GetNonLeafKeysOptions) => Key[]; getPath: (key: Key | null | undefined, options?: GetPathOptions) => T extends true ? MergedPath : MergedPath; getFirstAvailableNode: () => TreeNode | null; getPrev: KeyToNonGroupNodeWithOptions; getNext: KeyToNonGroupNodeWithOptions; getParent: KeyToNonGroupNode; getChild: KeyToNonGroupNode; } export {};