import { ComputedRef, MaybeRef, Ref, ShallowRef } from 'vue';
import { DocModeType, Doc } from '../../../core';
import { DocInfo } from '../../types';
import { DesignSuiteContext } from '../../../runtime/_register_/context/DesignSuiteContext';
import { OnlineFormInstanceResponse, OnlineFormTmplResponse } from '@gct-paas/api/apaas';
export interface IDocProps {
    /** 文档实例id或者文档模板id */
    requestId: MaybeRef<string | undefined>;
    /** 批次号 */
    materialNo?: string;
    /** 查询条件 */
    requestQuery?: Record<string, any>;
}
interface IDeviceConfig {
    /** 默认的用户id */
    defaultUserId: string | undefined;
    /** 默认的部门id */
    defaultOrgId: string | undefined;
    /** 默认的物料查询条件 */
    defaultProductSearchFields: string;
}
export interface IDocTemplatePayload {
    /** 渲染模式类型 */
    renderModeType?: DocModeType;
}
export interface IDocInstancePayload {
    /** 是否是详情页面 */
    isDetailPage?: boolean | Function;
    /** 组件传进来的参数 */
    paramExtraProps?: Record<string, any>;
}
export interface IDocPayload extends IDocTemplatePayload, IDocInstancePayload {
    /** 工厂类型 */
    factoryType: 'template' | 'instance';
    /** 模型 key */
    modelKey?: ModelKey;
    /** 设备配置信息 */
    deviceConfig?: IDeviceConfig;
    /** 是否是模拟填报 */
    isMockReport: boolean;
    /** 是否是预览模式 */
    isPreview: boolean;
    ctx: DesignSuiteContext;
}
/** 文档加载工厂 — 只负责响应式加载与生命周期，不包含业务操作 */
export interface DocumentFactory {
    /** 文档引擎实例 */
    docIns: ShallowRef<Doc | null>;
    /** 文档页面信息（响应式，驱动 canvas 渲染） */
    docInfo: Ref<DocInfo>;
    /** 交互状态 */
    docInteraction: any;
    /** 是否已成功加载文档 */
    hasData: ComputedRef<boolean>;
    /** 是否正在加载 */
    loading: ComputedRef<boolean>;
    /** 手动触发文档重新加载 */
    reload(): void;
}
export interface Execute {
    /** 文档实例id或者文档模板id */
    id: string;
    /** 模板 id */
    tid: string;
    /** 接口返回的数据 */
    requestInfo: OnlineFormTmplResponse & OnlineFormInstanceResponse;
    /** 填报渲染模式 */
    fillModeType: DocModeType;
    /** 按钮渲染模式 */
    btnModelType: DocModeType;
    /** 外部传进来的参数（实例的话会和接口进行合并处理） */
    paramsConfig?: Record<string, any>;
    /** 真实填报数据的查询条件 */
    query: Record<string, any>;
}
/**
 * 文档加载工厂
 * 职责：响应 requestId 变化 → 拉取数据 → 初始化引擎 → 暴露响应式状态
 */
export declare function useDocumentFactory(props: IDocProps, payload: IDocPayload): DocumentFactory;
export {};
