import type { MutableRefObject } from 'react';
import type { FloorMapItemBase, FloorMapItemUnit, FloorMapZoomConfig } from '../types';
/** react-zoom-pan-pinch TransformWrapper render 注入的上下文 */
export declare type FloorMapTransformContext = {
    zoomIn: () => void;
    zoomOut: () => void;
    resetTransform: () => void;
    setTransform: (x: number, y: number, scale: number) => void;
} | null;
export interface UseFloorMapTransformMetricsParams<T extends FloorMapItemBase> {
    items: T[];
    cellSize: number;
    itemGap: number;
    effectiveItemUnit: FloorMapItemUnit;
    isFloorMapView: boolean;
    mode: 'read' | 'edit';
    zoom: FloorMapZoomConfig;
    transformRef: MutableRefObject<FloorMapTransformContext>;
    /** 由父组件创建并传入 useFloorMapEditState，本 hook 每帧写入内容区偏移 */
    contentOffsetRef: MutableRefObject<{
        x: number;
        y: number;
    }>;
    /** 与 mapLayer.boundingPadding 一致；未传用 DEFAULT_BOUNDING_PADDING */
    boundingPadding?: number;
    /**
     * 平面图：当前画布 id（或其它在切换画布时应重置平移/对齐会话的 key）。
     * 不传则不跑「异步加载图元后的首次左上对齐」逻辑。
     */
    frameResetKey?: string;
}
export declare function useFloorMapTransformMetrics<T extends FloorMapItemBase>(params: UseFloorMapTransformMetricsParams<T>): {
    containerRef: import("react").RefObject<HTMLDivElement>;
    mapAreaRef: import("react").RefObject<HTMLDivElement>;
    viewportSize: {
        width: number;
        height: number;
    };
    mapAreaSize: {
        width: number;
        height: number;
    };
    contentWidth: number;
    contentHeight: number;
    contentOffsetX: number;
    contentOffsetY: number;
    initialPositionX: number;
    initialPositionY: number;
    zoomConfig: {
        initialScale: number;
        minScale: number;
        maxScale: number;
        step: number;
    };
    scale: number;
    setScale: import("react").Dispatch<import("react").SetStateAction<number>>;
    isFullscreen: boolean;
    toggleFullscreen: () => void;
    fitBounds: () => boolean;
    lastTransformRef: MutableRefObject<{
        x: number;
        y: number;
        scale: number;
    }>;
    isInteractingWithElement: boolean;
    setIsInteractingWithElement: import("react").Dispatch<import("react").SetStateAction<boolean>>;
};
