import { Doc } from '../..';
import { BaseMetaNode } from '../types';
import { WidgetMeta } from '../../widget/widget-meta';
import { MultipleItem } from '../../../suites/shared/panel/config/editor/attach-fields-editor/types';
import { AttachFieldTarget } from '../../../domain/field/attach-field';
import { AttachFieldParentMeta, WidgetOptionLike } from './types';
export type AttachFieldCursorPin = {
    nodeId: string;
    side: 'before' | 'after';
};
/**
 * 引用字段（attach field）运行时上下文。
 */
export declare class AttachFieldContext {
    /** `widgetMeta.extra.biz` 上标识「此为引用字段」的键 */
    static readonly BIZ_FLAG: "isAttachField";
    /**
     * 为布局生成的 widgetMeta.extra 打上引用字段标记。
     */
    static markAttachFieldMeta(extra?: WidgetMeta['extra']): WidgetMeta['extra'];
    /** 当前 widget 是否为引用字段（非画布拖入的独立字段组件） */
    static isAttachFieldWidget(widgetMeta: WidgetMeta | undefined | null): boolean;
    /** 读取布局阶段写入的「父选项」绑定信息，非引用字段返回 null */
    static getParentMeta(widgetMeta: WidgetMeta | undefined | null): AttachFieldParentMeta | null;
    /** 由父字段 props 与选项值解析列表定位，供面板与画布点击共用 */
    private static resolveListContext;
    /** 根据引用字段 widgetMeta.id 解析画布上的 modelRef.id */
    static resolveAttachFieldModelId(doc: Doc, itemId: string): string | null;
    /** 画布点击引用字段时，生成与 panel 列表点击一致的 `attachFieldTarget` */
    static resolveAttachFieldTarget(doc: Doc, widgetMeta: WidgetMeta): AttachFieldTarget | null;
    private static isFieldMarkerRun;
    /** 引用字段 model 分组内的正文字符 run（排除 [ ] 与间距占位） */
    private static getAttachFieldContentNodes;
    /** 取节点内最后一个字符索引（单字节点为 0） */
    private static getNodeLastCharOffset;
    /**
     * 点击引用字段【/】时，落到内侧首尾字符：
     * 【 → 首字 before；】 → 末字 after
     */
    static resolveAttachFieldMarkerContentPin(doc: Doc, modelId: string, marker: 'left' | 'right'): (AttachFieldCursorPin & {
        offset: number;
    }) | null;
    static getModelSplitNodes(doc: Doc, modelId: string): BaseMetaNode[];
    /**
     * 从父组件 props 解析某一选项下的引用字段列表。
     * - 布尔：`trueAttachFields` / `falseAttachFields`
     * - 枚举：选项对象上的 `attachFields`（通常来自 computedOptions）
     */
    static getOptionAttachFields(widgetProps: Record<string, any> | undefined, option: WidgetOptionLike): MultipleItem[];
    /**
     * 父字段当前值是否包含本引用字段绑定的选项值。
     * 用于条件校验、overlay 禁用等：未选中对应选项时不应要求填写引用字段。
     */
    private static isParentOptionActive;
    /** 引用字段当前是否处于可填报 / 可校验状态。无父绑定信息时视为普通字段，恒为 true。 */
    static isActive(doc: Doc, widgetMeta: WidgetMeta | undefined | null): boolean;
    /** 枚举 / 布尔选项值相等比较（布尔走 toBoolean，其余按字符串） */
    private static isSameOptionValue;
}
