import { FIELD_TYPE } from '../../domain/field/field-type';
import { FieldManifest } from '../../capabilities/field-manifest';
import { FieldMeta } from '../../capabilities/model-field-runtime';
import { Doc } from '../view/Doc';
import { DataManager, EmitSource } from './DataManager';
/**
 * Pipeline 运行时上下文
 *
 * 主要给 enrichers 使用：
 * - 获取字段 manifest
 * - 动态加载字段 meta
 */
export type PostChangePipelineContext = {
    /**
     * 根据字段类型获取 manifest
     */
    getFieldManifest: (type: FIELD_TYPE) => FieldManifest | undefined;
    /**
     * 根据模型 key + 字段 key 获取字段 meta
     */
    loadFieldByKey: (modelKey: string, key: string) => Promise<FieldMeta | undefined>;
};
/**
 * 数据变更后的处理流水线
 *
 * 主要职责：
 * 1. 等待依赖字段刷新完成
 * 2. 根据 changedPaths 找到对应 enrichers
 * 3. 执行 enrich 逻辑
 * 4. 将 enrich 结果再次写回 DataManager
 *
 * 典型场景：
 * - 自动填充字段
 * - 字段联动
 * - 数据增强
 * - 根据某字段自动计算其它字段
 */
export declare class PostChangePipeline {
    /**
     * 数据管理器
     */
    private dataManager;
    /**
     * 文档实例
     */
    private doc;
    /**
     * 当前注册的 enrichers
     *
     * 每个 enricher：
     * - match(path) 判断是否处理该字段
     * - enrich(path, value) 生成补充数据
     */
    private enrichers;
    /**
     * 防止同一路径重复并发执行
     *
     * key:
     *   path
     *
     * value:
     *   当前执行中的 Promise
     */
    private inFlight;
    /**
     * pipeline 上下文
     */
    private pipelineCtx?;
    constructor(
    /**
     * 数据管理器
     */
    dataManager: DataManager, 
    /**
     * 文档实例
     */
    doc: Doc);
    /**
     * 设置 pipeline 上下文
     *
     * 设置后会重新构建 enrichers
     */
    setContext(ctx: PostChangePipelineContext): void;
    /**
     * 重建 enricher 注册列表
     *
     * 从当前文档中的 widget instances
     * 动态生成 enrichers
     */
    rebuildRegistrations(): void;
    /**
     * 变更后执行流水线
     *
     * @param changedPaths 本次变化的字段路径
     * @param source       变更来源
     */
    flush(changedPaths: string[], source: EmitSource): Promise<void>;
    /**
     * 执行某个 path 对应的 enrichers
     */
    private runEnrichersForPath;
}
