import React from 'react';

type FileType = 'file' | 'folder';
interface FileNode {
    name: string;
    type: FileType;
    content?: string;
    children?: FileNode[];
}
interface FileMap {
    node: FileNode;
    path: string;
    parentPath: string | null;
}
interface FileSurfProps {
    files: Map<string, FileMap>;
    height?: string | number;
    width?: string | number;
    theme?: 'dark' | 'light';
}
interface FileTreeProps {
    files: Map<string, FileMap>;
    onFileSelect: (path: string) => void;
    selectedFile: string | null;
    explorerWidth: number;
}
interface MonacoEditorProps {
    files: Map<string, FileMap>;
    selectedFile: string | null;
    openTabs: string[];
    activeTab: string | null;
    onTabChange: (path: string) => void;
    onTabClose: (path: string) => void;
    highlightedFile: string | null;
}
interface UseFileSurfReturn {
    files: Map<string, FileMap>;
    addFile: (parentPath: string, newFile: FileNode) => void;
    updateFile: (filePath: string, newContent: string) => void;
    deleteFile: (filePath: string) => void;
}

declare const FileSurf: React.FC<FileSurfProps>;

/**
 * Custom hook for managing file system operations
 */
declare const useFileSurf: (initialFiles: FileNode) => UseFileSurfReturn;

export { type FileMap, type FileNode, FileSurf, type FileSurfProps, type FileTreeProps, type FileType, type MonacoEditorProps, type UseFileSurfReturn, useFileSurf };
