import LogicFlow from '../LogicFlow';
import { Options as LFOptions } from '../options';
import EventEmitter from '../event/eventEmitter';
import PointTuple = LogicFlow.PointTuple;
export type ZoomParamType = boolean | number;
export type TransformData = Record<'SCALE_X' | 'SCALE_Y' | 'SKEW_Y' | 'SKEW_X' | 'TRANSLATE_X' | 'TRANSLATE_Y', number>;
export type TransformType = 'zoom' | 'resetZoom' | 'translate' | 'focusOn';
export interface TransformInterface {
    SCALE_X: number;
    SCALE_Y: number;
    SKEW_Y: number;
    SKEW_X: number;
    TRANSLATE_X: number;
    TRANSLATE_Y: number;
    ZOOM_SIZE: number;
    MINI_SCALE_SIZE: number;
    MAX_SCALE_SIZE: number;
    translateLimitMinX: number;
    translateLimitMinY: number;
    translateLimitMaxX: number;
    translateLimitMaxY: number;
    zoom: (isZoomOut: ZoomParamType, point?: PointTuple) => string;
    HtmlPointToCanvasPoint: (point: PointTuple) => PointTuple;
    CanvasPointToHtmlPoint: (point: PointTuple) => PointTuple;
    moveCanvasPointByHtml: (point: PointTuple, x: number, y: number) => PointTuple;
    getTransformStyle: () => {
        transform: string;
    };
}
export declare class TransformModel implements TransformInterface {
    MINI_SCALE_SIZE: number;
    MAX_SCALE_SIZE: number;
    SCALE_X: number;
    SKEW_Y: number;
    SKEW_X: number;
    SCALE_Y: number;
    TRANSLATE_X: number;
    TRANSLATE_Y: number;
    ZOOM_SIZE: number;
    eventCenter: EventEmitter;
    translateLimitMinX: number;
    translateLimitMinY: number;
    translateLimitMaxX: number;
    translateLimitMaxY: number;
    constructor(eventCenter: EventEmitter, options: LFOptions.Common);
    setZoomMiniSize(size: number): void;
    setZoomMaxSize(size: number): void;
    /**
     * 将最外层graph上的点基于缩放转换为canvasOverlay层上的点。
     * @param point HTML点
     */
    HtmlPointToCanvasPoint(point: PointTuple): PointTuple;
    /**
     * 将最外层canvasOverlay层上的点基于缩放转换为graph上的点。
     * @param point HTML点
     */
    CanvasPointToHtmlPoint(point: PointTuple): PointTuple;
    /**
     * 将一个在canvas上的点，向x轴方向移动directionX距离，向y轴方向移动directionY距离。
     * 因为canvas可能被缩小或者放大了，所以其在canvas层移动的距离需要计算上缩放的量。
     * @param point 点
     * @param directionX x轴距离
     * @param directionY y轴距离
     */
    moveCanvasPointByHtml(point: PointTuple, directionX: number, directionY: number): PointTuple;
    /**
     * 根据缩放情况，获取缩放后的delta距离
     * @param deltaX x轴距离变化
     * @param deltaY y轴距离变化
     */
    fixDeltaXY(deltaX: number, deltaY: number): PointTuple;
    /**
     * 基于当前的缩放，获取画布渲染样式transform值
     */
    getTransformStyle(): {
        transform: string;
    };
    /**
     * 放大缩小图形
     * @param zoomSize 放大缩小的值，支持传入0-n之间的数字。小于1表示缩小，大于1表示放大。也支持传入true和false按照内置的刻度放大缩小
     * @param point 缩放的原点
     * @returns {string} -放大缩小的比例
     */
    zoom(zoomSize?: ZoomParamType, point?: PointTuple): string;
    private emitGraphTransform;
    resetZoom(): void;
    translate(x: number, y: number): void;
    /**
     * 将图形定位到画布中心
     * @param targetX 图形当前x坐标
     * @param targetY 图形当前y坐标
     * @param width 画布宽
     * @param height 画布高
     */
    focusOn(targetX: number, targetY: number, width: number, height: number): void;
    /**
     * 更新画布可以移动范围
     */
    updateTranslateLimits(limit: boolean | 'vertical' | 'horizontal' | [number, number, number, number]): void;
}
export default TransformModel;
