import React from 'react';
import { type FolderTreeData } from './DirectoryTree';
export interface FileContentService {
    loadFileContent(filePath: string): Promise<string>;
}
export type SemanticType = 'root' | 'directoryTree' | 'directoryTitle' | 'filePreview' | 'previewTitle' | 'previewRender';
export interface FolderProps {
    prefixCls?: string;
    className?: string;
    classNames?: Partial<Record<SemanticType, string>>;
    styles?: Partial<Record<SemanticType, React.CSSProperties>>;
    style?: React.CSSProperties;
    directoryIcons?: false | Record<'directory' | string, React.ReactNode | (() => React.ReactNode)>;
    treeData: FolderTreeData[];
    selectable?: boolean;
    selectedFile?: string[];
    defaultSelectedFile?: string[];
    onSelectedFileChange?: (file: {
        path: string[];
        title?: FolderTreeData['title'];
        content?: string;
    }) => void;
    directoryTreeWith?: number | string;
    emptyRender?: false | React.ReactNode | (() => React.ReactNode);
    previewRender?: React.ReactNode | ((file: {
        content?: string;
        path: string[];
        title?: FolderTreeData['title'];
        language: string;
    }, info: {
        originNode: React.ReactNode;
    }) => React.ReactNode);
    defaultExpandedPaths?: string[];
    expandedPaths?: string[];
    defaultExpandAll?: boolean;
    onExpandedPathsChange?: (paths: string[]) => void;
    fileContentService?: FileContentService;
    onFileClick?: (filePath: string, content?: string) => void;
    onFolderClick?: (folderPath: string) => void;
    directoryTitle?: false | React.ReactNode | (() => React.ReactNode);
    previewTitle?: false | React.ReactNode | (({ title, path, content, }: {
        title: React.ReactNode;
        path: string[];
        content: string;
    }) => React.ReactNode);
}
export type FolderRef = {
    nativeElement: HTMLDivElement;
};
declare const Folder: React.ForwardRefExoticComponent<FolderProps & React.RefAttributes<FolderRef>>;
export default Folder;
