import type Handler from '../Handler';
interface IRuleOptions {
    /**
     * 标尺宽度/高度
     * */
    ruleSize: number;
    /**
     * 标尺背景色
     * */
    ruleBgColor: string;
    /**
     * 标尺线刻度颜色
     * */
    ruleLinColor: string;
    /**
     * 标尺线颜色
     * */
    alignLinColor: string;
}
export declare class RuleLayerController {
    handler: Handler;
    options: IRuleOptions;
    private alighlineStore;
    private draggingLineId;
    private hoverLineId;
    private isEventListening;
    private resumeCanvasInteraction;
    constructor(handler: Handler);
    dispose(): void;
    /**
     * 初始化
     * */
    init(): void;
    /**
     * 展示标尺
     * */
    showRule(): void;
    /**
     * 隐藏标尺
     * */
    hideRule(): void;
    /**
     * 清空所有辅助线
     * */
    clearAlignLines(): void;
    /**
     * 是否有对齐线
     * @returns 判断结果
     */
    hasAlignLines(): boolean;
    /**
     * fabric画布坐标转标尺系坐标
     * fabric画布以画布左上角为0,0点
     * 标尺坐标系基于workare左上角 / 画布中央为0,0点
     * @param x 画布x坐标
     * @param y 画布y坐标
     * @returns 标尺系坐标
     * */
    canvasPositionToRulePosition(x: number, y: number): {
        x: number;
        y: number;
    };
    /**
     * 标尺系坐标转fabric画布坐标
     * @param ruleX 标尺x坐标
     * @param ruleY 标尺y坐标
     * @returns 画布坐标
     * */
    rulePositionToCanvasPosition(ruleX: number, ruleY: number): {
        x: number;
        y: number;
    };
    /**
     * 默认以画布中心为原点，有workarea的情况下以workarea左上角为原点
     * @returns 标尺原点的canvas坐标
     * */
    private getRuleOrigin;
    /**
     * 响应window尺寸变化
     * */
    private onWinResize;
    /**
     * 初始化监听
     * */
    private initEventListeners;
    /**
     * 停止监听
     */
    stopEventListeners(): void;
    /**
     * fabric渲染完成前触发
     */
    private onCanvasBeforeRender;
    /**
     * 鼠标事件
     * @param e 事件event
     * @returns
     */
    private onCanvasMouseDown;
    /**
     * 设置即将拖拽的水平和垂直对齐线
     * @param type 设置的类型
     */
    private setLine;
    /**
     * 鼠标事件
     * @param e 事件event
     * @returns
     */
    private onCanvasMouseMove;
    /**
     * 鼠标事件
     * @param e 事件event
     * @returns
     */
    private onCanvasMouseUp;
    /**
     * 更新辅助线
     */
    private updateAlignLine;
    /**
     * 更新标尺刻度元素
     * */
    private updateRuleObjects;
    /**
     *  重绘标尺相关元素
     */
    private render;
    /**
     * 停止所有canvas内元素的时间响应，并返回一个函数用来恢复暂停
     * @returns 恢复暂停函数, 仅生效一次
     * */
    private preventCanvasInteraction;
    /**
     * 基于参数值全等的可缓存函数
     * @param fn 任意可执行函数
     * @param 配置项
     * @returns 可缓存的新函数
     * */
    private cache;
    /**
     * 基于0点，向前后整理出所有from ~ to，间隔step的数组
     * */
    private makeGridSteps;
    /**
     * 构建标尺需要的绘制元素
     * @param 依赖的画布参数
     * @returns 可渲染元素集合
     * */
    private createRuleRenderObjectsImplement;
    /**
     * 创建横纵标尺
     * @param type 横纵类型
     * @param items 遍历创建的点
     * @param condition 长标尺计算
     * @param pointArr 节点存储数组
     * @param sizeParam 帮助计算尺寸的参数
     */
    private createRuler;
    private createRuleRenderObjects;
}
export {};
