import type React from 'react';
import type { MarkdownRemarkPlugin, MarkdownToHtmlConfig } from '../MarkdownEditor/editor/utils/markdownToHtml';
import type { MarkdownEditorPlugin } from '../MarkdownEditor/plugin';
export interface CharacterQueueOptions {
    /** 每帧输出的最大字符数，默认 3 */
    charsPerFrame?: number;
    /**
     * 是否启用 CharacterQueue 逐字输出（RAF 驱动）。
     * MarkdownRenderer 流式默认合并为 `false`，避免每帧全量重解析导致整页闪动；需打字机时再设为 `true`。
     */
    animate?: boolean;
    /**
     * 仅对末尾 N 个字符做动画，前面内容立即展示。
     * 设为 50 时，每次 push 只对最后 50 字逐字输出，避免整段逐字动画。
     * 默认 undefined 表示整段动画（原有行为）。
     */
    animateTailChars?: number;
    /** 动画速度因子，1.0 为标准速度 */
    speed?: number;
    /** 内容完成后立即 flush 全部剩余 */
    flushOnComplete?: boolean;
    /** 后台 tick 间隔（ms），默认 100 */
    backgroundInterval?: number;
    /** 后台每次 tick 的字符数倍率，默认 10 */
    backgroundBatchMultiplier?: number;
}
export type { RendererPlugin } from '../MarkdownEditor/plugin';
export interface RendererBlockProps {
    node?: any;
    children?: React.ReactNode;
    [key: string]: any;
}
export type RenderMode = 'slate' | 'markdown';
export interface MarkdownRendererProps {
    /** 完整的 markdown 内容（流式场景下持续增长） */
    content: string;
    /** 是否处于流式状态 */
    streaming?: boolean;
    /** 流式完成 */
    isFinished?: boolean;
    /** 字符队列配置 */
    queueOptions?: CharacterQueueOptions;
    /** 插件配置（用于自定义块渲染） */
    plugins?: MarkdownEditorPlugin[];
    /** markdownToHtml 的额外 remark/rehype 插件 */
    remarkPlugins?: MarkdownRemarkPlugin[];
    /** HTML 渲染配置 */
    htmlConfig?: MarkdownToHtmlConfig;
    /** 类名 */
    className?: string;
    /** 样式 */
    style?: React.CSSProperties;
    /** 类名前缀 */
    prefixCls?: string;
    /** 代码块配置（传递给 CodeRenderer） */
    codeProps?: Record<string, any>;
    /** 脚注配置 */
    fncProps?: {
        render?: (props: Record<string, any> & {
            children: React.ReactNode;
        }, defaultDom: React.ReactNode) => React.ReactNode;
        onFootnoteDefinitionChange?: (data: any[]) => void;
    };
    /** 链接配置 */
    linkConfig?: {
        /** 是否在新标签页打开链接，默认 true */
        openInNewTab?: boolean;
        /** 自定义链接点击处理，返回 false 可阻止默认跳转 */
        onClick?: (url?: string) => boolean | void;
    };
    /**
     * 流式时是否为生长中的末段启用淡入（AnimationText）。
     * 默认 false，避免重解析时整页闪动；需要段落入场效果时再设为 true。
     */
    streamingParagraphAnimation?: boolean;
    /** Apaasify / Schema 自定义渲染 */
    apaasify?: {
        enable?: boolean;
        /** 自定义渲染函数，接收解析后的 JSON value，返回 React 节点 */
        render?: (value: any) => React.ReactNode;
    };
}
export interface MarkdownRendererRef {
    /** 获取渲染容器的 DOM 元素 */
    nativeElement: HTMLDivElement | null;
    /** 获取当前显示的内容 */
    getDisplayedContent: () => string;
}
