import { ShallowRef } from 'vue';
import { Doc } from '../../../core';
import { FieldChangeItem, WidgetFieldMetaMap } from '../../../runtime/interface/change-diff';
/** 数据变更基线上下文 */
export interface DocBaselineContext {
    baselineSnapshot: Record<string, any> | undefined;
    widgetMetaMap: WidgetFieldMetaMap;
}
export interface DocUnsavedChanges {
    /** 是否存在未保存改动 */
    dirty: boolean;
}
/** getUnsavedChanges 可选参数 */
export interface DocGetUnsavedChangesOptions {
    /** 为 true 时除文档模型外，同时与初始化时的 rawData 快照比对 */
    includeRawData?: boolean;
}
export interface DocOperations {
    /** 校验所有字段，返回错误映射或 null（通过） */
    validate(): Promise<Record<string, string[]> | null>;
    /** 获取文档模型的 XmlJson（用于保存） */
    exportModel(): any;
    /**
     * 获取文档中所有附件文件路径列表
     * @param types 需要筛选的组件类型，默认 ['fw:file']
     */
    getDocumentAttachmentPaths(types?: string[]): string[];
    /** 进入填报模式并记录基线快照（用于变更追踪） */
    enterBaseline(uniqueId: string): DocBaselineContext | null;
    /** 基于基线快照计算字段变更列表 */
    computeBaselineChanges(ctx: DocBaselineContext): Promise<FieldChangeItem[]>;
    /** 设置变更批注 */
    setAnnotation(ids: string[], list: any[]): void;
    /** 获取当前未保存改动状态，供外部在退出前做拦截 */
    getUnsavedChanges(options?: DocGetUnsavedChangesOptions): DocUnsavedChanges;
    /** 标记当前文档为已保存 */
    markAsSaved(): void;
}
/**
 * 文档操作组合式函数
 *
 * 接收任意来源的 Doc 响应式引用，返回可独立使用的操作集合。
 * 不依赖 useDocumentFactory，可与任何持有 Doc 的场景搭配使用。
 *
 * @example
 * // 独立使用
 * const ops = useDocOperations(someDocRef);
 * await ops.validate();
 *
 * // 与 factory 搭配
 * const factory = useDocumentFactory(props, payload);
 * const ops = useDocOperations(factory.doc);
 */
export declare function useDocOperations(docRef: ShallowRef<Doc | null>): DocOperations;
