import * as react from 'react';

type FileWriteOptions = {
    /** Whether to create the file if it doesn't exist */
    create?: boolean;
    /** Whether to truncate the file if it exists */
    truncate?: boolean;
};
type FileOperations = {
    /** Write data to a file at the specified path */
    writeFile: (path: string, data: string | ArrayBuffer | Blob, options?: FileWriteOptions) => Promise<void>;
    /** Create a new file at the specified path */
    createFile: (path: string, initialData?: string | ArrayBuffer | Blob) => Promise<FileSystemFileHandle>;
    /** Delete a file at the specified path */
    deleteFile: (path: string) => Promise<void>;
};
type Filter = {
    shouldIncludeFile: (filepath: string, handle: FileSystemHandle) => Promise<boolean>;
    shouldProcessDirectory: (filepath: string, handle: FileSystemHandle) => Promise<boolean>;
};
type FilterFn = () => Promise<Filter>;
declare const gitFilter: FilterFn;
declare const distFilter: FilterFn;
declare const miscFilter: FilterFn;
declare const commonFilters: FilterFn[];
declare const processDirectory: (directoryHandle: FileSystemDirectoryHandle, directoryPath: string, filters: Filter[], includeFiles: Map<string, FileSystemFileHandle>, ignoreFilePaths: Set<string>) => Promise<Map<string, FileSystemFileHandle>>;
interface UseFileHandlingHookProps {
    filters?: FilterFn[];
    onFilesAdded?: (newFiles: Map<string, string>, previousFiles: Map<string, string>) => void;
    onFilesChanged?: (changedFiles: Map<string, string>, previousFiles: Map<string, string>) => void;
    onFilesDeleted?: (deletedFiles: Map<string, string>, previousFiles: Map<string, string>) => void;
    pollInterval?: number;
    batchSize?: number;
    debounceInterval?: number;
    /** Time in milliseconds to cache file contents before re-reading from disk. Defaults to 5000ms (5 seconds) */
    fileCacheTtl?: number;
}
declare const useFileSystem: (props: UseFileHandlingHookProps) => {
    handles: Map<string, FileSystemFileHandle>;
    onDirectorySelection: () => Promise<void>;
    onClear: () => void;
    files: Map<string, string>;
    setFiles: react.Dispatch<react.SetStateAction<Map<string, string>>>;
    isProcessing: boolean;
    isBrowserSupported: boolean;
    writeFile: (path: string, data: string | ArrayBuffer | Blob, options?: FileWriteOptions) => Promise<void>;
    createFile: (path: string, initialData?: string | ArrayBuffer | Blob) => Promise<FileSystemFileHandle>;
    deleteFile: (path: string) => Promise<void>;
};
declare const useFs: (props: UseFileHandlingHookProps) => {
    handles: Map<string, FileSystemFileHandle>;
    onDirectorySelection: () => Promise<void>;
    onClear: () => void;
    files: Map<string, string>;
    setFiles: react.Dispatch<react.SetStateAction<Map<string, string>>>;
    isProcessing: boolean;
    isBrowserSupported: boolean;
    writeFile: (path: string, data: string | ArrayBuffer | Blob, options?: FileWriteOptions) => Promise<void>;
    createFile: (path: string, initialData?: string | ArrayBuffer | Blob) => Promise<FileSystemFileHandle>;
    deleteFile: (path: string) => Promise<void>;
};

export { type FileOperations, type FileWriteOptions, type Filter, type FilterFn, type UseFileHandlingHookProps, commonFilters, distFilter, gitFilter, miscFilter, processDirectory, useFileSystem, useFs };
