import type { CascadeMode, DropContext, GetChildren, LoadChildren, MoveEventPayload, NodeKey, SelectedPaneSlotProps, SelectionMode, TreeHandle } from './types.js';
declare const __VLS_export: <Node>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
    props: import("vue").PublicProps & __VLS_PrettifyLocal<{
        /** Root-level nodes. Use `v-model:roots` for controlled mode. */
        roots: Node[];
        getKey: (node: Node) => NodeKey;
        getChildren?: GetChildren<Node>;
        loadChildren?: LoadChildren<Node>;
        /** `'none' | 'single' | 'multi'`. Default `'none'`. */
        selectionMode?: SelectionMode;
        /** Multi cascade mode. Ignored for `single` / `none`. */
        cascade?: CascadeMode;
        /** v-model for selection. Shape depends on `selectionMode`. */
        modelValue?: NodeKey | NodeKey[] | undefined;
        /** Per-node gate. */
        selectable?: (node: Node, depth: number) => boolean;
        /** Per-node draggable gate. Defaults to global `draggable` prop. */
        draggable?: ((node: Node, depth: number) => boolean) | boolean;
        /** Drop gate; required to enable drag-and-drop. */
        canDrop?: (ctx: DropContext<Node>) => boolean;
        /** Render-time filter. Does NOT mutate selection. */
        filterPredicate?: (node: Node, query: string) => boolean;
        filterQuery?: string;
        /** Initial expanded set (uncontrolled). */
        initialExpanded?: NodeKey[];
        /**
         * Paint the focused row with a subtle background. Keyboard navigation
         * still tracks focus either way — this only controls the visual. Forms
         * and similar surfaces that don't expose keyboard nav to users can turn
         * it off so a stray click doesn't leave a permanent highlight.
         */
        showFocusedRow?: boolean;
    } & {
        onMove?: ((payload: MoveEventPayload) => any) | undefined;
        "onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
        "onUpdate:roots"?: ((value: Node[]) => any) | undefined;
        "onUpdate:expanded"?: ((value: string[]) => any) | undefined;
    }> & (typeof globalThis extends {
        __VLS_PROPS_FALLBACK: infer P;
    } ? P : {});
    expose: (exposed: import("vue").ShallowUnwrapRef<TreeHandle<Node>>) => void;
    attrs: any;
    slots: {
        node?: (p: import("./types.js").NodeSlotProps<Node>) => unknown;
        actions?: (p: import("./types.js").ActionsSlotProps<Node>) => unknown;
        empty?: () => unknown;
        error?: (p: import("./types.js").ErrorSlotProps<Node>) => unknown;
        'loading-children'?: (p: import("./types.js").LoadingChildrenSlotProps<Node>) => unknown;
        'selected-pane'?: (p: SelectedPaneSlotProps<Node>) => unknown;
    };
    emit: {
        (e: "update:modelValue", value: NodeKey | NodeKey[] | undefined): void;
        (e: "update:roots", value: Node[]): void;
        (e: "update:expanded", value: NodeKey[]): void;
        (e: "move", payload: MoveEventPayload): void;
    };
}>) => import("vue").VNode & {
    __ctx?: Awaited<typeof __VLS_setup>;
};
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_PrettifyLocal<T> = (T extends any ? {
    [K in keyof T]: T[K];
} : {
    [K in keyof T as K]: T[K];
}) & {};
