import { Point } from '@vertexvis/geometry';
import { InteractionType } from './baseInteractionHandler';
import { InteractionApi, InteractionConfigProvider } from './interactionApi';
export declare abstract class MouseInteraction {
    protected currentPosition: Point.Point | undefined;
    protected abstract type: InteractionType;
    setPosition(position?: Point.Point): void;
    getPosition(): Point.Point | undefined;
    getType(): InteractionType;
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi, element: HTMLElement): void;
    drag(event: MouseEvent, api: InteractionApi): void;
    endDrag(event: MouseEvent, api: InteractionApi): void;
    zoom(delta: number, api: InteractionApi): Promise<void>;
}
export declare class RotateInteraction extends MouseInteraction {
    type: InteractionType;
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi): void;
    drag(event: MouseEvent, api: InteractionApi): void;
    endDrag(event: MouseEvent, api: InteractionApi): void;
}
export declare class RotatePointInteraction extends MouseInteraction {
    type: InteractionType;
    private startingPosition?;
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi): void;
    drag(event: MouseEvent, api: InteractionApi): void;
    endDrag(event: MouseEvent, api: InteractionApi): void;
}
export declare class ZoomInteraction extends MouseInteraction {
    private interactionConfigProvider;
    type: InteractionType;
    private didTransformBegin;
    private interactionTimer;
    private startPt?;
    constructor(interactionConfigProvider: InteractionConfigProvider);
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi, element: HTMLElement): Promise<void>;
    drag(event: MouseEvent, api: InteractionApi): Promise<void>;
    endDrag(event: MouseEvent, api: InteractionApi): void;
    zoom(delta: number, api: InteractionApi): Promise<void>;
    zoomToPoint(pt: Point.Point, delta: number, api: InteractionApi): Promise<void>;
    private beginInteraction;
    private endInteraction;
    private resetInteractionTimer;
    private getDirectionalDelta;
    private getInteractionDelay;
    private startInteractionTimer;
    private stopInteractionTimer;
    private operateWithTimer;
}
export declare class PanInteraction extends MouseInteraction {
    type: InteractionType;
    private canvasRect?;
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi, element: HTMLElement): void;
    drag(event: MouseEvent, api: InteractionApi): void;
    endDrag(event: MouseEvent, api: InteractionApi): void;
}
export declare class TwistInteraction extends MouseInteraction {
    type: InteractionType;
    private canvasRect?;
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi, element: HTMLElement): void;
    drag(event: MouseEvent, api: InteractionApi): void;
    endDrag(event: MouseEvent, api: InteractionApi): void;
}
export declare class PivotInteraction extends MouseInteraction {
    type: InteractionType;
    beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi): void;
    drag(event: MouseEvent, api: InteractionApi): void;
    endDrag(event: MouseEvent, api: InteractionApi): void;
}
