import type { TreeNode } from "./tree-node.js";
/**
 * MIME type used to transfer workspace file-reference data during
 * drag-and-drop. The payload is `JSON.stringify({ path })` where
 * `path` is the workspace-relative file path.
 */
export declare const FILE_REF_MIME = "application/x-stigmer-file-ref";
export interface FileTreeNodeProps {
    readonly node: TreeNode;
    readonly selectedPath: string;
    readonly onSelect: (path: string) => void;
    /**
     * Optional double-click handler for file nodes. When set, a double-click on a
     * file calls `onActivate(path)` (used by the workspace surface to pin a
     * previewed tab); the single click still fires `onSelect`. Folders ignore it.
     */
    readonly onActivate?: (path: string) => void;
    readonly depth: number;
    /**
     * When `true`, file nodes (not folders) become draggable and emit
     * the `application/x-stigmer-file-ref` MIME type on drag start.
     *
     * Defaults to `false` to avoid unintended drag behavior in contexts
     * where file referencing is not applicable (e.g., SkillFileBrowser).
     */
    readonly enableDrag?: boolean;
    /**
     * When `true`, render monochrome file-type / folder icons before each name
     * (VS Code explorer feel). Opt-in so drag/skill contexts stay icon-free.
     */
    readonly showIcons?: boolean;
    /**
     * When `true`, draw vertical indent guides down each nested group and indent
     * via nested margins rather than per-row left padding. Opt-in; the default
     * padding-based indentation is preserved for existing consumers.
     */
    readonly indentGuides?: boolean;
    /**
     * Maximum depth at which folders start collapsed instead of expanded.
     * Folders at depth >= maxInitialDepth render collapsed by default,
     * reducing DOM node count for large trees. Users can still expand
     * them manually.
     *
     * When `undefined`, all folders start expanded (original behavior).
     */
    readonly maxInitialDepth?: number;
}
/**
 * Recursive tree-node renderer for a {@link TreeNode} hierarchy.
 *
 * Renders folders as expandable disclosure rows and files as selectable
 * leaf rows. When `enableDrag` is `true`, file rows are draggable and
 * emit a custom MIME type for the SessionComposer drop target.
 *
 * Uses `role="treeitem"` / `role="group"` for a11y and `--stgm-*`
 * theme tokens for all visual properties.
 */
export declare function FileTreeNode({ node, selectedPath, onSelect, onActivate, depth, enableDrag, showIcons, indentGuides, maxInitialDepth, }: FileTreeNodeProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=FileTreeNode.d.ts.map