import { FileCategory, FileNode, FileType } from '../types';
import { DataSourceManager, DataSourceResult } from './DataSourceStrategy';
/**
 * 文件类型推断结果
 */
export interface FileTypeInference {
    /** 用户自定义的、显示在页面上的类型 */
    displayType?: string;
    /** 推断出的文件类型 */
    fileType: FileType;
    /** 文件分类 */
    category: FileCategory;
}
/**
 * 完整的文件处理结果
 */
export interface FileProcessResult {
    /** 类型推断结果 */
    typeInference: FileTypeInference;
    /** 数据源处理结果 */
    dataSource: DataSourceResult;
    /** 是否可以预览 */
    canPreview: boolean;
    /** 预览推荐方式 */
    previewMode: 'inline' | 'modal' | 'external' | 'none';
}
/**
 * 文件类型处理器
 */
export declare class FileTypeProcessor {
    private dataSourceManager;
    constructor(dataSourceManager: DataSourceManager);
    /**
     * 推断文件类型
     */
    inferFileType(file: FileNode): FileTypeInference;
    /**
     * 处理文件的完整流程
     */
    processFile(file: FileNode): FileProcessResult;
    /**
     * 清理处理结果
     */
    cleanupResult(result: FileProcessResult): void;
    /**
     * 从MIME类型推断文件类型
     */
    private getTypeFromMimeType;
    /**
     * 从文件名推断文件类型
     */
    private getTypeFromFileName;
    /**
     * 从URL推断文件类型
     */
    private getTypeFromUrl;
    /**
     * 确定预览能力
     */
    private determinePreviewCapability;
    /**
     * 确定预览模式
     */
    private determinePreviewMode;
}
/**
 * 全局文件类型处理器实例
 */
export declare const fileTypeProcessor: FileTypeProcessor;
/**
 * 文件类型判断便捷函数
 */
export declare const isImageFile: (file: FileNode) => boolean;
export declare const isVideoFile: (file: FileNode) => boolean;
export declare const isPdfFile: (file: FileNode) => boolean;
export declare const isTextFile: (file: FileNode) => boolean;
export declare const isArchiveFile: (file: FileNode) => boolean;
export declare const isAudioFile: (file: FileNode) => boolean;
export declare const getMimeType: (file: FileNode) => string;
