export interface TreeNode {
    /** Full path from the root, e.g. `src/components/Button.vue`. */
    path: string;
    /** Display name (typically the trailing path segment). */
    name: string;
    kind: "file" | "directory";
    /** Pre-loaded children. When omitted for a directory, the loader is
     *  invoked the first time the node is expanded. */
    children?: TreeNode[];
}
export interface FileTreeProps {
    /** Root path. Passed to `onLoadTree` on mount. */
    path?: string;
    /** REQUIRED loader for children at a given path. */
    onLoadTree: (path: string) => Promise<TreeNode[]>;
    /** Current selected file path (v-modelable as `selectedPath`). */
    selectedPath?: string;
    /** Called when the user clicks a file. */
    onSelectPath?: (path: string) => void;
    /** Controlled expanded directory paths (v-modelable as `expandedPaths`). */
    expandedPaths?: string[];
    /** Fired when the set of expanded paths changes. */
    onExpandedChange?: (paths: string[]) => void;
    label?: string;
    name?: string | null;
    classList?: string[] | string;
}
declare function loadRoot(): Promise<void>;
declare const _default: import('vue').DefineComponent<FileTreeProps, {
    reload: typeof loadRoot;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    "update:selectedPath": (path: string) => any;
    "update:expandedPaths": (paths: string[]) => any;
}, string, import('vue').PublicProps, Readonly<FileTreeProps> & Readonly<{
    "onUpdate:selectedPath"?: ((path: string) => any) | undefined;
    "onUpdate:expandedPaths"?: ((paths: string[]) => any) | undefined;
}>, {
    label: string;
    path: string;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
export default _default;
//# sourceMappingURL=FileTree.vue.d.ts.map