import { URI } from '@difizen/mana-common';
import { LabelProvider } from '../label';
import { TreeExpansionService, TreeModelImpl, TreeNavigationService, TreeSelectionService } from '../tree';
import type { CompositeTreeNode, TreeNode } from '../tree';
import { FileService } from './file-service';
import { FileStatNode } from './file-tree';
import type { FileTree } from './file-tree';
import type { FileChange, FileChangesEvent, FileOperationEvent } from './files';
export declare class FileTreeModel extends TreeModelImpl {
    rootVisible: boolean;
    protected readonly labelProvider: LabelProvider;
    protected readonly fileService: FileService;
    protected readonly tree: FileTree;
    protected readonly selectionService: TreeSelectionService;
    protected readonly expansionService: TreeExpansionService;
    protected readonly navigationService: TreeNavigationService;
    constructor(labelProvider: LabelProvider, fileService: FileService, tree: FileTree, selectionService: TreeSelectionService, expansionService: TreeExpansionService, navigationService: TreeNavigationService);
    protected init(): void;
    get selectedFileStatNodes(): Readonly<FileStatNode>[];
    getNodesByUri(uri: URI): IterableIterator<TreeNode>;
    get location(): URI | undefined;
    set location(uri: URI | undefined);
    /**
     * to workaround https://github.com/Axosoft/nsfw/issues/42
     */
    protected onDidMove(event: FileOperationEvent): void;
    protected onFilesChanged(changes: FileChangesEvent): void;
    protected isRootAffected(changes: FileChangesEvent): boolean;
    protected getAffectedUris(changes: FileChangesEvent): URI[];
    protected isFileContentChanged(change: FileChange): boolean;
    protected refreshAffectedNodes(uris: URI[]): boolean;
    protected getAffectedNodes(uris: URI[]): Map<string, CompositeTreeNode>;
    copy(source: URI, target: Readonly<FileStatNode>): Promise<URI>;
    /**
     * Move the given source file or directory to the given target directory.
     */
    move(source: TreeNode, target: TreeNode): Promise<URI | undefined>;
    protected shouldReplace(_fileName: string): Promise<boolean>;
}
//# sourceMappingURL=file-tree-model.d.ts.map