import type { FloorMapEdge, FloorMapSceneElement, FloorMapViewConfig } from '@pisell/materials';
export interface UseTopologyFloorPlanResult {
    /** 远端 floor-plan 主键，作为 PUT 接口的 path id */
    floorPlanRemoteId: number | null;
    /**
     * 已保存的 sceneElements；undefined = 远端还没加载完成。
     * 加载完成后即使没有任何元素，也会是 [] 而非 undefined。
     */
    savedSceneElements: FloorMapSceneElement[] | undefined;
    /** 已保存的 edges；约定同 savedSceneElements */
    savedEdges: FloorMapEdge[] | undefined;
    /** 远端是否已加载完成 */
    isLoaded: boolean;
    /**
     * 在保存成功之后调用，把刚保存的视图作为新基线写回，避免组件下一轮渲染再次
     * 触发对账误判（把已保存当成「未保存」）。
     */
    applyLocalSave: (params: {
        sceneElements: FloorMapSceneElement[];
        edges: FloorMapEdge[];
    }) => void;
    /**
     * 与 wrapFloorMapOnSaveWithRemotePersist 兼容的 setter：直接接受 patch。
     */
    setRemoteFloorPlanView: (patch: Partial<FloorMapViewConfig> | null) => void;
}
export declare function useTopologyFloorPlan(options: {
    /** 拓扑 floor-plan code（一个租户一份） */
    floorPlanCode: string;
    /**
     * 关闭 floor-plan 集成时传 false：不 GET / 不自动创建。
     * 与 `subscribeFloorPlanPush` 无关：404/4004 自动创建始终走 `ensureShopFloorPlanByCode`。
     */
    enabled?: boolean;
    /**
     * WebPOS：按 code 订阅 OS 推送，卸载时 unsubscribe。
     * 为 false 时仅首轮 GET（含 404/4004 → POST 创建），无 subscriberId / 无退订。
     */
    subscribeFloorPlanPush?: boolean;
}): UseTopologyFloorPlanResult;
