import Eventful from 'zrender/lib/core/Eventful.js'; 
 | 
import { ZRenderType } from 'zrender/lib/zrender.js'; 
 | 
import { ZRElementEvent, RoamOptionMixin } from '../../util/types.js'; 
 | 
import { Bind3 } from 'zrender/lib/core/util.js'; 
 | 
import Group from 'zrender/lib/graphic/Group.js'; 
 | 
export declare type RoamType = RoamOptionMixin['roam']; 
 | 
interface RoamOption { 
 | 
    zoomOnMouseWheel?: boolean | 'ctrl' | 'shift' | 'alt'; 
 | 
    moveOnMouseMove?: boolean | 'ctrl' | 'shift' | 'alt'; 
 | 
    moveOnMouseWheel?: boolean | 'ctrl' | 'shift' | 'alt'; 
 | 
    /** 
 | 
     * If fixed the page when pan 
 | 
     */ 
 | 
    preventDefaultMouseMove?: boolean; 
 | 
} 
 | 
declare type RoamBehavior = 'zoomOnMouseWheel' | 'moveOnMouseMove' | 'moveOnMouseWheel'; 
 | 
export interface RoamEventParams { 
 | 
    'zoom': { 
 | 
        scale: number; 
 | 
        originX: number; 
 | 
        originY: number; 
 | 
        isAvailableBehavior: Bind3<typeof isAvailableBehavior, null, RoamBehavior, ZRElementEvent>; 
 | 
    }; 
 | 
    'scrollMove': { 
 | 
        scrollDelta: number; 
 | 
        originX: number; 
 | 
        originY: number; 
 | 
        isAvailableBehavior: Bind3<typeof isAvailableBehavior, null, RoamBehavior, ZRElementEvent>; 
 | 
    }; 
 | 
    'pan': { 
 | 
        dx: number; 
 | 
        dy: number; 
 | 
        oldX: number; 
 | 
        oldY: number; 
 | 
        newX: number; 
 | 
        newY: number; 
 | 
        isAvailableBehavior: Bind3<typeof isAvailableBehavior, null, RoamBehavior, ZRElementEvent>; 
 | 
    }; 
 | 
} 
 | 
export interface RoamControllerHost { 
 | 
    target: Group; 
 | 
    zoom: number; 
 | 
    zoomLimit: { 
 | 
        min?: number; 
 | 
        max?: number; 
 | 
    }; 
 | 
} 
 | 
declare class RoamController extends Eventful<{ 
 | 
    [key in keyof RoamEventParams]: (params: RoamEventParams[key]) => void | undefined; 
 | 
}> { 
 | 
    pointerChecker: (e: ZRElementEvent, x: number, y: number) => boolean; 
 | 
    private _zr; 
 | 
    private _opt; 
 | 
    private _dragging; 
 | 
    private _pinching; 
 | 
    private _x; 
 | 
    private _y; 
 | 
    readonly enable: (this: this, controlType?: RoamType, opt?: RoamOption) => void; 
 | 
    readonly disable: () => void; 
 | 
    constructor(zr: ZRenderType); 
 | 
    isDragging(): boolean; 
 | 
    isPinching(): boolean; 
 | 
    setPointerChecker(pointerChecker: RoamController['pointerChecker']): void; 
 | 
    dispose(): void; 
 | 
    private _mousedownHandler; 
 | 
    private _mousemoveHandler; 
 | 
    private _mouseupHandler; 
 | 
    private _mousewheelHandler; 
 | 
    private _pinchHandler; 
 | 
} 
 | 
declare function isAvailableBehavior(behaviorToCheck: RoamBehavior, e: ZRElementEvent, settings: Pick<RoamOption, RoamBehavior>): boolean; 
 | 
export default RoamController; 
 |