/**
 * 代码块命令组。
 * 四种 variant 共用 `codeBlock` 弹窗类型，按 `props.variant` 渲染各自独立的表单。
 */
import type { EditorView } from "@codemirror/view";
import { Command, type CommandContext } from "../../../editor/commands/Command";
import type { DialogCallbacks, DialogCapableCommand } from "../../../editor/commands/DialogCommand";
import type { DialogType } from "../../../editor/commands/dialogTypes";
/** 代码块围栏变体，固化在命令名中（如 `codeBlockTitle`）。 */
export type CodeBlockVariant = "basic" | "title" | "highlight" | "collapse";
/** `codeBlock` 弹窗提交结果。 */
export interface CodeBlockDialogResult {
    variant: CodeBlockVariant;
    lang: string;
    code: string;
    title?: string;
    highlightLines?: string;
    /** collapse 变体：折叠前最多可见行数，对应围栏 `:collapsed-lines=N` */
    collapsedMaxLines?: number;
}
/**
 * 根据 variant 生成围栏代码块 Markdown。
 * @param data - 已校验的代码块表单数据
 * @returns 可插入编辑器的围栏 Markdown
 */
export declare function codeBlockMarkdown(data: CodeBlockDialogResult): string;
/**
 * 按 `props.variant` 选择对应表单渲染。
 * 四个 command 共用此渲染器，避免 {@link buildDialogRenderers} 互相覆盖。
 * @param host - 弹窗内容挂载元素
 * @param props - 包含代码块变体的弹窗预填充属性
 * @param callbacks - 提交或取消的回调
 * @returns 关闭弹窗时调用的清理函数
 */
export declare function renderCodeBlockDialog(host: HTMLElement, props: Record<string, unknown>, callbacks: DialogCallbacks<CodeBlockDialogResult>): () => void;
/** 代码块命令，variant 在构造时固定并传入弹窗 props。 */
export declare class CodeBlockCommand implements Command, DialogCapableCommand {
    private readonly variant;
    readonly dialogType: DialogType;
    renderDialog: typeof renderCodeBlockDialog;
    /**
     * 创建固定围栏变体的命令。
     * @param variant - 传给共享表单的代码块变体
     */
    constructor(variant: CodeBlockVariant);
    /**
     * 打开对应变体的代码块表单并插入围栏。
     * @param view - 要修改的 CodeMirror 编辑器实例
     * @param _payload - 未使用的命令参数
     * @param ctx - 提供事件总线的命令上下文
     * @returns 代码块插入结果
     */
    execute(view: EditorView, _payload: unknown, ctx: CommandContext): boolean | Promise<boolean>;
}
/** `codeBlockBasic` — 基础围栏 ```lang */
export declare const codeBlockBasicCommand: CodeBlockCommand;
/** `codeBlockTitle` — 带文件名 ```lang title="..." */
export declare const codeBlockTitleCommand: CodeBlockCommand;
/** `codeBlockHighlight` — 行号高亮 ```lang{2,4-6} */
export declare const codeBlockHighlightCommand: CodeBlockCommand;
/** `codeBlockCollapse` — 折叠长代码 ```lang :collapsed-lines=N` */
export declare const codeBlockCollapseCommand: CodeBlockCommand;
//# sourceMappingURL=CodeBlockCommand.d.ts.map