/**
 * 卡片命令组。
 * 六种 variant 共用 `card` 弹窗类型，按 `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";
/** 卡片变体，固化在命令名中（如 `linkCard` → `link`）。 */
export type CardVariant = "basic" | "link" | "image" | "repo" | "grid" | "masonry";
export interface CardItem {
    title: string;
    content: string;
}
export interface LinkCardDialogResult {
    variant: "link";
    title: string;
    link: string;
    icon?: string;
    content: string;
}
export interface ImageCardDialogResult {
    variant: "image";
    image: string;
    title: string;
    href?: string;
    author?: string;
    date?: string;
    /** 属性描述；与正文二选一或同时存在时正文优先渲染 */
    description?: string;
    content?: string;
}
export interface RepoCardDialogResult {
    variant: "repo";
    repo: string;
    link?: string;
    visibility: string;
    content: string;
}
export interface GridCardDialogResult {
    variant: "grid";
    colsMode: "uniform" | "responsive";
    colsUniform?: number;
    colsSm?: number;
    colsMd?: number;
    colsLg?: number;
}
export interface MasonryCardDialogResult {
    variant: "masonry";
    cols: number;
    gap: number;
}
/** `card` 弹窗提交结果。 */
export type CardDialogResult = LinkCardDialogResult | ImageCardDialogResult | RepoCardDialogResult | GridCardDialogResult | MasonryCardDialogResult;
/**
 * 根据 variant 生成卡片 Markdown。
 * @param data - 已校验的卡片表单数据
 * @returns 可插入编辑器的卡片 Markdown
 */
export declare function cardMarkdown(data: CardDialogResult): string;
/**
 * 按 `props.variant` 选择对应表单渲染。
 * 六个 command 共用此渲染器，避免互相覆盖。
 * @param host - 弹窗内容挂载元素
 * @param props - 包含卡片变体的弹窗预填充属性
 * @param callbacks - 提交或取消的回调
 * @returns 关闭弹窗时调用的清理函数
 */
export declare function renderCardDialog(host: HTMLElement, props: Record<string, unknown>, callbacks: DialogCallbacks<CardDialogResult>): () => void;
/** 卡片命令，variant 在构造时固定并传入弹窗 props。 */
export declare class CardCommand implements Command, DialogCapableCommand {
    private readonly variant;
    readonly dialogType: DialogType;
    renderDialog: typeof renderCardDialog;
    /**
     * 创建固定卡片变体的命令。
     * @param variant - 传给共享表单的卡片变体
     */
    constructor(variant: CardVariant);
    /**
     * 插入该命令固定的卡片变体。
     * @param view - 要修改的 CodeMirror 编辑器实例
     * @param _payload - 未使用的命令参数
     * @param ctx - 提供事件总线的命令上下文
     * @returns 卡片插入结果
     */
    execute(view: EditorView, _payload: unknown, ctx: CommandContext): boolean | Promise<boolean>;
}
/** `card` — 基础卡片 `::: card 标题` */
export declare const cardCommand: CardCommand;
/** `linkCard` — 链接卡片 `::: link-card` */
export declare const linkCardCommand: CardCommand;
/** `imageCard` — 图片卡片 `::: image-card` */
export declare const imageCardCommand: CardCommand;
/** `repoCard` — 仓库卡片 `::: repo-card owner/repo` */
export declare const repoCardCommand: CardCommand;
/** `cardGrid` — 响应式卡片网格 `:::: card-grid` */
export declare const cardGridCommand: CardCommand;
/** `cardMasonry` — 瀑布流布局 `:::: card-masonry` */
export declare const cardMasonryCommand: CardCommand;
//# sourceMappingURL=CardCommand.d.ts.map