import * as react_jsx_runtime from 'react/jsx-runtime';
import { Node, NodeRow } from '@darksnow-ui/node-tree-headless';
import * as react from 'react';

interface NodeTreeProps {
    className?: string;
    style?: React.CSSProperties;
    renderNode?: (props: {
        row: any;
    }) => React.ReactNode;
    renderEmptyState?: () => React.ReactNode;
    onContextMenuAction?: (action: string, nodeId: string) => void;
    indentSize?: number;
    showContextMenu?: boolean;
    contextMenuClassName?: string;
    emptyStateClassName?: string;
    showRootDropArea?: boolean;
    rootDropAreaClassName?: string;
    renderRootDropArea?: (isDragOver: boolean) => React.ReactNode;
    resolveIcon?: (node: Node, isExpanded: boolean) => string;
}
declare function NodeTree({ className, style, renderNode, renderEmptyState, onContextMenuAction, indentSize, showContextMenu, contextMenuClassName, emptyStateClassName, showRootDropArea, rootDropAreaClassName, renderRootDropArea, resolveIcon, }: NodeTreeProps): react_jsx_runtime.JSX.Element;

interface EnhancedNodeRow extends NodeRow {
    node: Node;
    selected: boolean;
    expanded: boolean;
    visible: boolean;
    isCursor?: boolean;
    isFocus?: boolean;
}
interface TreeNodeProps {
    row: EnhancedNodeRow;
    renderLabel?: (node: Node) => React.ReactNode;
    renderIcon?: (node: Node, isExpanded: boolean) => React.ReactNode;
    indentSize?: number;
}
interface TreeNodeProps {
    row: EnhancedNodeRow;
    renderLabel?: (node: Node) => React.ReactNode;
    resolveIcon?: (node: Node, isExpanded: boolean) => string;
    indentSize?: number;
}
declare function TreeNode({ row, renderLabel, resolveIcon, indentSize, }: TreeNodeProps): react_jsx_runtime.JSX.Element;

interface ContextMenuProps {
    x: number;
    y: number;
    nodeId: string;
    containerElementRef?: React.RefObject<HTMLDivElement>;
    onClose: () => void;
    className?: string;
    onAction?: (action: string, nodeId: string) => void;
}
declare function ContextMenu({ x, y, nodeId, containerElementRef, onClose, className, onAction, }: ContextMenuProps): react_jsx_runtime.JSX.Element | null;

interface NodeWrapperProps {
    id: string;
    children: React.ReactNode;
    className?: string;
}
declare const NodeWrapper: react.MemoExoticComponent<({ id, children, className }: NodeWrapperProps) => react_jsx_runtime.JSX.Element>;

export { ContextMenu, type ContextMenuProps, NodeTree, type NodeTreeProps, NodeWrapper, TreeNode };
