import type Cell from './Cell';
import type CellHeader from './CellHeader';
export type ViewportRect = {
    x: number;
    y: number;
    left: number;
    top: number;
    right: number;
    bottom: number;
    width: number;
    height: number;
};
/** 内容缩放：逻辑坐标 ↔ 物理像素，canvas / DOM 共用 */
export default class ZoomScale {
    value: number;
    get isDefault(): boolean;
    clamp(value: number, min: number, max: number): number;
    /** @returns 是否发生变化 */
    set(value: number, min: number, max: number): boolean;
    /** 逻辑 -> 物理 */
    toVisual(logical: number): number;
    /** 物理 -> 逻辑 */
    toLogical(physical: number): number;
    toPx(logical: number): string;
    /** DOM 测量高度 -> 逻辑高度 */
    domHeightToLogical(physicalHeight: number): number;
    /** 逻辑内容尺寸 -> 物理尺寸 */
    contentToPhysical(logical: number): number;
    scaleStyle<T extends Record<string, any>>(style: T): T;
    assignScaledStyle(el: HTMLElement, style: Record<string, any>): void;
    /** 容器物理宽度 -> 逻辑可视宽度 */
    containerWidth(containerPhysicalWidth: number): number;
    resolveStageWidth(options: {
        containerPhysicalWidth: number;
        contentWidth: number;
        scrollerTrackSize: number;
        fillContainer: boolean;
    }): {
        stageWidth: number;
        stagePhysicalWidth: number;
    };
    applyStageHeight(stageElement: HTMLDivElement, physicalHeight: number): {
        stageHeight: number;
        stagePhysicalHeight: number;
    };
    /** floating-ui 锚点：逻辑单元格 -> 视口物理矩形 */
    getViewportRect(logical: {
        x: number;
        y: number;
        width: number;
        height: number;
    }, containerRect: DOMRect): ViewportRect;
    /** overlayer 单元格：外层物理定位 + 内层 zoom 缩放自定义 render */
    createOverlayerCellElement(cell: Cell | CellHeader, cssPrefix: string): HTMLDivElement;
}
