/**
 * FileViewer - 文件类型单元格渲染器（Canvas 实现）
 * 功能：显示文件列表（缩略图 + 文件名），右侧编辑/查看图标
 * 从 DOM 实现的 fileViewer-v2.ts 转换而来
 *
 * 布局结构：[ middle (fileBox: [fileItem, fileItem, ...]) ] [ after (editIcon / viewIcon) ]
 * TODO: 支持link类型
 */
import type { CellViewer, ViewerRenderContext, FileViewerData } from './types';
declare class FileViewer implements CellViewer<FileViewerData> {
    readonly type = "file";
    private imageManager;
    /** 记录加载失败的图片 URL，避免反复重试 */
    private failedImages;
    /** 悬停状态追踪：上一次悬停的文件项索引，用于检测 enter/leave（同 ImageViewer） */
    private lastHoverIndex;
    private lastHoverCellKey;
    private _sm;
    private get FILE_ITEM_BG_COLOR();
    private get TEXT_COLOR();
    private get EMPTY_TEXT_COLOR();
    private get ICON_COLOR();
    private get STRIKETHROUGH_COLOR();
    constructor();
    /**
     * 绘制文件单元格内容
     */
    draw(context: ViewerRenderContext, data: FileViewerData): void;
    /**
     * 处理点击事件
     * 保留事件响应，等待后续逻辑处理
     */
    onClick(context: ViewerRenderContext, data: FileViewerData, localX: number, localY: number): boolean;
    /**
     * 处理双击事件
     * 双击文件项时触发 onFileGoToDetail 回调（与 DOM fileViewer-v2.ts 的 onFileGoToDetail 对齐）
     * 回调签名：onFileGoToDetail({ ...fileItem, id: rowId, ids: allAssetIds }, data)
     */
    onDblClick(context: ViewerRenderContext, data: FileViewerData, localX: number, localY: number): boolean;
    /**
     * 获取交互区域的光标样式，同时追踪悬停状态变化触发 hover 回调（同 ImageViewer）
     */
    getInteractiveCursor(context: ViewerRenderContext, data: FileViewerData, localX: number, localY: number): string | null;
    /**
     * 解析文件值，返回标准化的文件数组
     */
    private parseValue;
    /**
     * 计算各区域的布局位置
     * 所有坐标相对于单元格左上角
     */
    private calculateLayout;
    /**
     * 缩略图模式布局（参考 ImageViewer）：图片高度占满行高，宽度根据原图宽高比自适应
     * 如果图片尚未加载完成（不知道宽高比），先用正方形占位
     * 如果所有图片总宽度超出可用宽度，等比缩放所有图片（与 ImageViewer.drawMultipleImages 一致）
     */
    private calculateThumbnailModeLayout;
    /**
     * 普通模式布局：缩略图 + 文件名，带背景
     */
    private calculateNormalModeLayout;
    /**
     * 判断坐标是否在指定区域内
     */
    private isInArea;
    /**
     * 命中检测：判断 localX/localY 落在哪个文件项上，返回索引，-1 表示未命中
     */
    private hitTestFileItem;
    /**
     * 追踪悬停文件项索引变化，触发 onFileMouseIn / onFileMouseOut 回调（同 ImageViewer.handleHoverChange）
     */
    private handleHoverChange;
    /**
     * 计算指定文件项在屏幕中的绝对矩形位置（同 ImageViewer.getImageScreenRect）
     */
    private getFileItemScreenRect;
    /**
     * 创建虚拟锚点元素，模拟 DOM 元素的 getBoundingClientRect 接口（同 ImageViewer.createVirtualAnchor）
     */
    private createVirtualAnchor;
    /**
     * 重置悬停状态（当鼠标移出文件列区域时需要调用）
     */
    resetHoverState(data: FileViewerData): void;
    /**
     * 绘制文件项矩形背景
     */
    private drawFileItemBackground;
    /**
     * 绘制空值占位符
     */
    private drawEmptyPlaceholder;
    /**
     * 绘制所有文件项
     */
    private drawFileItems;
    /**
     * 绘制文件缩略图
     * 参考 fileViewer-v2.ts 中 getIconByFileStatus 的逻辑：
     * - 有 previewUrl 时加载图片
     * - 无 previewUrl 但有 fileFormat（非图片格式）时绘制格式图标
     * - 根据 status 绘制不同状态图标（失败/转换中/未知）
     */
    private drawThumbnail;
    /**
     * 根据文件状态和格式绘制对应的图标
     * 调用 util.ts 中的 getIconByFileStatus 获取 SVG 图片 URL，再通过 ImageManager 加载渲染
     */
    /**
     * 绘制交付物角标（右下角圆形图标）
     * 与 DOM .mark-icon iconfont 图标对齐：
     * - ah-icon_finish1: 绿色 #00bd77 圆形背景 + 白色勾（已完成）
     * - ah-icon_help2: 橙色 #ed954f 圆形背景 + 白色问号（待验收）
     */
    private drawMarkIcon;
    private drawIconByFileStatus;
    /**
     * 通用 SVG 图标绘制方法
     * 通过 ImageManager 加载 SVG 图片并绘制到 Canvas 上
     */
    private drawSvgIcon;
    /**
     * 绘制预览图片
     * @param isDisplayThumbnail 缩略图模式时使用 contain 自适应绘制（宽度已在布局阶段根据宽高比计算好），
     *                           普通模式使用 cover 裁切绘制
     */
    private drawPreviewImage;
    /**
     * 绘制文件名文本
     */
    private drawFileName;
    /**
     * 绘制右侧操作区域
     * canEdit 时显示编辑图标，否则显示列表图标
     */
    private drawAfterArea;
    /**
     * 绘制编辑/铅笔图标
     */
    private drawEditIcon;
    /**
     * 绘制列表/查看图标（简化的列表形状）
     */
    private drawViewIcon;
    /**
     * 绘制关联图标
     */
    private drawLinkIcon;
    /**
     * 绘制删除线
     */
    private drawStrikethrough;
    /**
     * 绘制错误提示图标（⚠）
     */
    private drawErrorIcon;
    /**
     * 裁剪圆角矩形路径
     */
    private clipRoundRect;
    /**
     * 文本截断，超出宽度时显示省略号
     */
    private truncateText;
}
export default FileViewer;
