import { Doc, Doc as YDoc } from 'yjs';
import { AsyncComponent, AsyncSlot } from '@textbus/core';
/**
 * 子文档加载器
 */
export declare abstract class SubModelLoader {
    /**
     * 通过插槽获取已加载的文档
     * @param slot
     */
    abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null;
    /**
     * 通过组件获取已加载的文档
     * @param component
     */
    abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null;
    /**
     * 当本地新增异步子插槽时调用
     * @param slot
     */
    abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>;
    /**
     * 当本地新增异步子组件时调用
     * @param component
     */
    abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>;
    /**
     * 当远程异步子插槽同步到本地时调用
     * @param slot
     */
    abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>;
    /**
     * 当远程异步子组件同步到本地时调用
     * @param component
     */
    abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>;
}
export declare class NonSubModelLoader extends SubModelLoader {
    createSubModelBySlot(): Promise<Doc>;
    createSubModelByComponent(): Promise<Doc>;
    loadSubModelByComponent(): Promise<Doc>;
    loadSubModelBySlot(): Promise<Doc>;
    getLoadedModelBySlot(): Doc;
    getLoadedModelByComponent(): Doc;
}
