import { DisposableCollection } from '@difizen/mana-common';
import type { MenuPath } from '@difizen/mana-core';
import { ManaModule, SelectionService } from '@difizen/mana-core';
import * as React from 'react';
import { LabelProvider } from '../label';
import { TreeNode } from '../tree/tree';
import { TreeDecoratorService } from '../tree/tree-decorator';
import type { NodeProps } from '../tree/tree-protocol';
import { TreeProps } from '../tree/tree-protocol';
import { TreeView, TreeViewDecorator } from '../tree/view';
import { DirNode } from './file-tree';
import { FileTreeModel } from './file-tree-model';
export declare const FILE_TREE_CLASS = "mana-file-tree";
export declare const FILE_STAT_NODE_CLASS = "mana-FileStatNode";
export declare const DIR_NODE_CLASS = "mana-DirNode";
export declare const FILE_STAT_ICON_CLASS = "mana-FileStatIcon";
export declare const FileTreeViewFactory = "file-tree-view-fatory";
import './style/file-icon.less';
export declare const FileTreeViewComponent: React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>;
export declare const FileTreeViewModule: ManaModule;
export declare class FileTreeView extends TreeView {
    view: React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>;
    id: string;
    label: import("react/jsx-runtime").JSX.Element;
    protected readonly toCancelNodeExpansion: DisposableCollection;
    readonly props: TreeProps;
    readonly model: FileTreeModel;
    readonly treeViewDecorator: TreeViewDecorator;
    readonly selectionService: SelectionService;
    readonly labelProvider: LabelProvider;
    readonly contextMenuPath: MenuPath;
    protected readonly decoratorService: TreeDecoratorService;
    constructor(props: TreeProps, model: FileTreeModel, treeViewDecorator: TreeViewDecorator, selectionService: SelectionService, labelProvider: LabelProvider, decoratorService: TreeDecoratorService);
    createNodeClassNames(node: TreeNode, props: NodeProps): string[];
    createContainerAttributes(): React.HTMLAttributes<HTMLElement>;
    createNodeAttributes(node: TreeNode, props: NodeProps): React.Attributes & React.HTMLAttributes<HTMLElement>;
    protected getNodeTooltip(node: TreeNode): string | undefined;
    protected handleDragStartEvent(node: TreeNode, event: React.DragEvent): void;
    protected handleDragEnterEvent(node: TreeNode | undefined, event: React.DragEvent): void;
    protected handleDragOverEvent(node: TreeNode | undefined, event: React.DragEvent): void;
    protected handleDragLeaveEvent(_node: TreeNode | undefined, event: React.DragEvent): void;
    protected handleDropEvent(node: TreeNode | undefined, event: React.DragEvent): Promise<void>;
    protected getDropTargetDirNode(node: TreeNode | undefined): DirNode | undefined;
    protected setTreeNodeAsData(data: DataTransfer, node: TreeNode): void;
    protected setSelectedTreeNodesAsData(data: DataTransfer, sourceNode: TreeNode, relatedNodes: TreeNode[]): void;
    protected getTreeNodeFromData(data: DataTransfer): TreeNode | undefined;
    protected getSelectedTreeNodesFromData(data: DataTransfer): TreeNode[];
    protected deflateForStorage(node: TreeNode): object;
    protected inflateFromStorage(node: any, parent?: TreeNode): TreeNode;
}
//# sourceMappingURL=file-tree-view.d.ts.map