import { JsonNodePreviewOptions, JsonNode, JsonNodeHastElement } from '@zag-js/json-tree-utils';
import { JSX, Accessor } from 'solid-js';
import { d as TreeViewRootProps, U as UseTreeViewProps, h as TreeViewRootProviderProps, k as TreeViewTreeProps } from '../../tree-view-tree-DTB5aCol.js';
import { PropTypes } from '@zag-js/solid';
import * as treeView from '@zag-js/tree-view';
import '../../types-Sr_80hg9.js';
import '../../render-strategy-B5MqQP3X.js';
import '@zag-js/collection';
import '../factory.js';

interface JsonTreeViewOptions extends Partial<JsonNodePreviewOptions> {
    /**
     * Whether to show quotes on the keys.
     */
    quotesOnKeys?: boolean;
}

interface JsonTreeViewRootBaseProps extends JsonTreeViewOptions {
    /**
     * The data to display in the tree.
     */
    data: unknown;
    /**
     * The default expand level.
     */
    defaultExpandedDepth?: number;
}
interface JsonTreeViewRootProps extends Omit<TreeViewRootProps<JsonNode>, 'collection'>, JsonTreeViewRootBaseProps {
}
declare const JsonTreeViewRoot: (props: JsonTreeViewRootProps) => JSX.Element;

interface UseJsonTreeViewProps extends Omit<UseTreeViewProps<JsonNode>, 'collection'>, JsonTreeViewOptions {
    data: unknown;
    defaultExpandedDepth?: number;
}
interface UseJsonTreeViewReturn extends Accessor<treeView.Api<PropTypes, JsonNode> & {
    options: JsonTreeViewOptions;
}> {
}
declare const useJsonTreeView: (props: UseJsonTreeViewProps) => UseJsonTreeViewReturn;

interface JsonTreeViewRootProviderProps extends Omit<TreeViewRootProviderProps<JsonNode>, 'value'> {
    value: UseJsonTreeViewReturn;
}
declare const JsonTreeViewRootProvider: (props: JsonTreeViewRootProviderProps) => JSX.Element;

interface JsonTreeViewNodeBaseProps {
    /**
     * The icon to use for the arrow.
     */
    arrow?: JSX.Element;
    /**
     * The indent guide to use for the tree.
     */
    indentGuide?: boolean | JSX.Element;
    /**
     * The function to render the value of the node.
     */
    renderValue?: (node: JsonNodeHastElement) => JSX.Element;
}

interface JsonTreeViewTreeBaseProps extends JsonTreeViewNodeBaseProps {
}
interface JsonTreeViewTreeProps extends TreeViewTreeProps, JsonTreeViewTreeBaseProps {
}
declare const JsonTreeViewTree: (props: JsonTreeViewTreeProps) => JSX.Element;

declare namespace jsonTreeView {
  export { JsonTreeViewRoot as Root, type JsonTreeViewRootProps as RootProps, JsonTreeViewRootProvider as RootProvider, type JsonTreeViewRootProviderProps as RootProviderProps, JsonTreeViewTree as Tree, type JsonTreeViewTreeProps as TreeProps };
}

export { jsonTreeView as JsonTreeView, JsonTreeViewRoot, type JsonTreeViewRootProps, JsonTreeViewRootProvider, type JsonTreeViewRootProviderProps, JsonTreeViewTree, type JsonTreeViewTreeProps, type UseJsonTreeViewProps, type UseJsonTreeViewReturn, useJsonTreeView };
