import { CommandBase, PostCommandContext } from '../base/CommandBase';
import { Doc } from '../../view/Doc';
import { CommandPayloadMap } from '../types';
import { Wp } from '../../model/document';
import { WidgetMeta } from '../../widget/widget-meta';
type InsertFieldCommandOptions = CommandPayloadMap['insertField'];
export declare class InsertField extends CommandBase<'insertField'> {
    constructor(doc: Doc, payload: InsertFieldCommandOptions);
    protected execute(): Promise<PostCommandContext>;
    /**
     * 处理折叠状态下的文本（字段）插入
     */
    private handleCollapseText;
    /**
     * 处理选区下的文本（字段）插入
     */
    private handleSelectionText;
    protected isRootField(valuePath?: string): boolean;
    /**
     * 判断两个 valuePath 是否连续（父子关系）
     * @param parentPath 父路径，如 "$.a[n]"
     * @param childPath 子路径，如 "$.a[n].b" 或 "$.a[n].b[n].c"
     * @returns 是否为连续的父子关系
     *
     * @example
     * isConsecutivePath("$.a", "$.a.b")           // true
     * isConsecutivePath("$.a[n]", "$.a[n].b")     // true
     * isConsecutivePath("$.a[n].b[n]", "$.a[n].b[n].c") // true
     * isConsecutivePath("$.a", "$.b")             // false
     * isConsecutivePath("$.a[n].b", "$.a[n]")     // false (反向)
     */
    protected isConsecutivePath(parentPath: string, childPath: string): boolean;
    /**
     * 判断 childPath 是否可以在 parentPath 的循环区域中使用
     * @param parentPath 循环区域的路径，不以 [n] 结尾，如 "$.a" 或 "$.a[n].b"
     * @param childPath 要插入字段的路径，不以 [n] 结尾，如 "$.a.b" 或 "$.a[n].b.c"
     * @returns 是否兼容
     *
     * @example
     * isFieldPathCompatible("$.a", "$.a.b")              // true
     * isFieldPathCompatible("$.a", "$.a[n].b")           // true - 去掉开头 [n] 后 .b 没有 [n]
     * isFieldPathCompatible("$.a", "$.a[n].b[n].c")      // false - 去掉开头 [n] 后 .b[n].c 还有 [n]
     * isFieldPathCompatible("$.a[n].b", "$.a[n].b.c")    // true
     * isFieldPathCompatible("$.a[n].b", "$.a[n].b[n].c") // false - 去掉开头 [n] 后 .c 实际上应该检查原逻辑
     */
    protected isFieldPathCompatible(parentPath: string, childPath: string): boolean;
    private getLayoutTableCellFromCursor;
    private getModelCellFromCursor;
    /** 二维表/检验表：用当前单元格 subRenderer 分区 valuePath 作为父路径 */
    private getSubTableZoneParentPath;
    private resolveInsertFieldPayload;
    /**
     * 根据拖拽时 palette 传入的 subFieldKey 判断字段属于关联侧还是二维表/检验表主体侧。
     * - 仅 linkFieldKey：动态关联 palette（f_ewblink）
     * - 仅 subFieldKey：横向区 palette（f_ewb）
     * - sub:link：交叉区 palette 拖入的主体字段（f_ewb:f_ewblink）
     */
    private getDraggedFieldSide;
    private validateLinkSubTableFieldPath;
    /** 数据关联区向上/下扩充、超出子表主体行范围的模板行 */
    private isDataGroup2DExpansionCell;
    private getLinkSubTableRegionFromLayout;
    /**
     * 校验字段是否可插入当前位置
     * @returns 校验通过返回 null，失败返回提示文案
     */
    protected validateFieldPath(valuePath: string | undefined, node: Wp, widgetMeta?: WidgetMeta): string | null;
}
export {};
