/**
 * TextViewer - Basic text rendering viewer
 * Handles text display with alignment, truncation, tags, and rich text
 */
import type { CellViewer, ViewerRenderContext, TextViewerData } from './types';
/**
 * TextViewer renders text content in cells
 * This is the default viewer for most cell types
 */
declare class TextViewer implements CellViewer<TextViewerData> {
    readonly type = "text";
    /**
     * Draw text content in the cell
     */
    draw(context: ViewerRenderContext, data: TextViewerData): void;
    /**
     * 富文本片段绘制：解析 HTML → runs → 在 ctx 上单行绘制（含截断）
     * 与 painter.drawCellText 在常规字号 / 单行 / 中线对齐 / 左右对齐方面行为一致。
     * fallback：runs 解析为空时回退到 plainText 单色绘制，保证不丢内容。
     */
    private drawRichText;
    /**
     * Get the display text from data
     *
     * 返回值新增 richHtml 字段：当原始输入为富文本 HTML 时，把原始 HTML 一并带回，
     * 供 draw() 走片段渲染路径使用。strip 后的纯文本仍然作为 text 返回，
     * 用于 asTag / 多标签 / 兜底单色路径，保持原行为零回归。
     */
    private getDisplayText;
    /**
     * 把任意值安全转换为可显示字符串。
     * 防御性兜底：避免 String({...}) → '[object Object]' 直接显示在单元格里。
     * - 简单类型直接 String()
     * - 对象优先取 displayName / display_name / label / name / value 字段
     * - 数组转为逗号分隔
     * - 仍无法降级时返回空串而不是 '[object Object]'
     */
    private coerceToString;
    /**
     * 检查内容是否为富文本格式（与 AssetMatrix customStyle.ts 中 isRichTextContent 一致）
     */
    private isRichTextContent;
    /**
     * 检查文本是否包含 Markdown 链接
     */
    private containsMarkdownLinks;
    /**
     * 从 Markdown 链接中提取显示文本
     * [displayText](url) → displayText
     * 混合内容中的非链接部分原样保留
     */
    private extractMarkdownLinkText;
    /**
     * Extract plain text from HTML/rich text content
     */
    private extractPlainText;
    /**
     * Draw text as a tag/badge with background color
     */
    private drawTag;
    /**
     * Draw a rounded rectangle
     */
    private drawRoundedRect;
    /**
     * Truncate text with ellipsis if it exceeds max width
     */
    private truncateText;
    /**
     * 渲染多标签（带背景色），与 DOM 表格 textViewer.ts 的 renderValueWithBgColor 分支对齐
     * DOM 中使用 CSS grid + minmax(40px, max-content) 实现多标签横向排列，
     * Canvas 端手动计算标签宽度和位置，实现等价的效果
     */
    private drawMultiTags;
}
export default TextViewer;
